2012-01-17 51 views
2

所以我創建了一個基於WCF Web API的REST服務。它在我的本地IIS上運行良好。但是當我將它部署到外部服務器時,它不起作用。調試WCF Web Api REST服務的問題

在我的global.asax.cs我的路線「MyRoute」映射到一個類MyHandler的。所以每當我去http://localhost/MyApplication/MyRoute/MyResource我得到一個有效的迴應。

但是在外部服務器部署後,如果我在IE中打開http://localhost/MyApplication/MyRoute/MyResource,我得到「Internet Explorere無法顯示網頁」(FF =「連接已重置 - 加載頁面時服務器連接已重置」)

如果我輸入一個無效的資源名稱:http://localhost/MyApplication/MyRoute/adfasdf我得到的外部服務器上相同的結果,我得到本地:「端點未找到」。此外,我已經嘗試從MyHandler/MyRoute/MyResource映射到的方法中刪除所有邏輯,以查看導致請求失敗的代碼中的某些內容,但結果仍然存在。

我最好的猜測是,這個問題在某種程度上是與路由映射。

我會幫忙真的很感謝無論是在這種特殊情況下我有,或更一般如何調試這一點。一個令人沮喪的是,我甚至不知道我能在哪裏找到錯誤日誌。我查看了事件查看器,但無法找到任何內容,也不知道在哪裏查看更多內容。

我會很高興發佈一些代碼,如果這將有助於。

編輯:

好了,我解決了這個問題。這是一個路由的事情。我通過將其包含在web.config中解決了這個問題:

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
     <modules runAllManagedModulesForAllRequests="true"> 
      <remove name="UrlRoutingModule" /> 
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />  
     </modules> 
    </system.webServer> 

我仍然不會介意理解這些模塊背後的機制。他們在哪裏定義?是否有一個配置文件的服務器定義哪些模塊加載,因爲顯然這在我的本地IIS和外部之間有所不同?

...而我仍然不知道日誌在哪裏。

+0

完整性檢查。確保您的網站設置正確,應用程序池設置爲正確的.net版本和正確的模式。檢查你的IIS日誌以確保它到達那裏。什麼是您的本地IIS?你的服務器IIS怎麼樣?有差異。 – 2012-01-17 18:42:03

+0

比較兩個IIS實例上的應用程序池,都是ASP.NET v4.0,管理流水線模式=集成。這兩個服務器都是IIS 7. 我在哪裏可以找到IIS日誌? – 2012-01-17 18:49:26

+0

感謝您發佈答案。你是怎麼弄出來的? – 2012-02-22 17:17:48

回答

0

當IIS託管,網頁API使用相同的URL路由模塊爲ASP.NET(MVC)來選擇端點。如果你是自主託管,它不必。