2013-10-22 34 views
0

我想在現有的asp.net web窗體應用程序中創建一個web服務,但它不工作。下面的代碼描述服務:添加一個Web服務(ASMX)到現有的asp.net窗體網站

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
public class TestService: System.Web.Services.WebService { 

    public TestService() { 

     //Uncomment the following line if using designed components 
     //InitializeComponent(); 
    } 

    [WebMethod] 
    public string HelloWorld(string name) { 
     return "Hello " + name; 
    }  
} 

當我嘗試測試這個Web服務,瀏覽器嘗試下載服務,而不是執行它的:

service

另外,如果我嘗試引用另一個項目的服務,我收到以下錯誤:

url http://localhost:64925/services/TestService.asmx上的文檔未被識別爲已知文檔類型。 從每個已知類型的錯誤消息可能會幫助您解決問題: - 從XML架構「的報告是'的文檔格式不能識別(內容類型是文本/ html;字符集= UTF-8

我的猜測是,這與'服務'目錄沒有正確配置有關,但如果將服務添加到網站的根目錄,我會得到同樣的問題。

我嘗試過aspnet_regiis .Net 2 我使用Visual Studio 2012和IIS快遞。

更新: 看來,該網站也被引用的SharePoint Web服務,我剛纔發現的錯誤的詳細信息如下奇怪的消息:

有下載http://localhost:64925/services/TestService.asmx/_vti_bin/ListData.svc/$metadata錯誤。 請求失敗,HTTP狀態404:未找到。

+0

正如它所說,這是無法識別的內容類型。因此,類型'asmx'沒有在IIS中正確註冊,所以當瀏覽器請求鏈接時,服務器認爲'這到底是什麼 - 我將它作爲一個純文件',因此下載。 – Stevo

+0

@Stevo謝謝,但我該如何解決它與IIS Express運行Visual Studio 2012? – philreed

+0

不幸的是我不能提供具體的指導(因爲我不知道)。我首先看看IIS配置。正如你所說的那樣,它可以在網站外的全新Web服務上運行,並且工作正常,所以IIS配置中的某些內容無法正常工作。我會查看現有站點與現有設備之間的差異,並逐一查找故障查找設置。對不起,我無法提供更多幫助。 – Stevo

回答

0

我已經成功地找到了答案。

Global.asax文件有一些自定義代碼來重寫Application_BeginRequest事件處理程序中的URL,並且此代碼未正確處理對.ASMX文件的請求。

只需在該邏輯中添加一個過濾器以排除.ASMX文件類型即可解決我的問題。

感謝所有花時間嘗試幫助的人。

0

我剛剛試圖複製這個問題,但無濟於事。完全按照網站的預期返回。

直接複製代碼並將其粘貼到.NET 3.5 Web窗體站點中的空白服務文檔中。

是否知道它是否在web.config文件中創建了正確的處理程序?

<httpHandlers> 
    <remove verb="*" path="*.asmx"/> 
    <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> 
    </httpHandlers> 
    <httpModules> 
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </httpModules> 

只是想知道,如果這可能是你的問題,如果它沒有告訴瀏覽器如何正確地處理文檔。

+0

乾杯,我也嘗試過一個空白的web服務項目以外的現有網站,工作正常。我認爲它必須是特定於配置或現有網站的內容。處理程序在web.config中看起來很好。我認爲它與SharePoint有關,已經更新了這個問題。 – philreed

相關問題