2013-04-24 58 views
6

我正在使用.Net Web API,它在調試以及本地主機IIS上正常工作,但是當我將它發佈到服務器時,它開始提供以下錯誤: -
「消息」:「沒有HTTP資源發現匹配的請求URI.Net Web API沒有找到與請求URI相匹配的HTTP資源

在服務器上,我們在此API默認的站點應用程序文件夾,但它在本地IIS的默認網站,這樣工作正常應用程序文件夾應該不是問題

現在我試着在處理程序中設置正確的動詞,如下面的url中指定的,但沒有工作:
HTTP 404 Page Not Found in Web Api hosted in IIS 7.5

我也有安裝在服務器上MVC4以下網址的建議:
.NET Web Api - 404 - File or directory not found

同樣的WebDav模塊,處理器可能會錯誤,所以我也試着刪除它,但它給同樣的錯誤。

這裏是一個模塊,處理器設置的Web.config部分: -

<modules runAllManagedModulesForAllRequests="true" /> 
<validation validateIntegratedModeConfiguration="false" /> 
<handlers> 
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
<remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="*" modules="IsapiModule" 
     scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" 
     preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> 
    <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="*" modules="IsapiModule" 
     scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" 
     preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> 
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
</handlers> 

我不隨地路線玩。我是否缺少關於web.config或服務器IIS中的設置/配置的信息?

+0

所有的HTTP方法都會給你這個錯誤,基本上是任何路由,或者只有特定的動詞(例如,PUT和DELETE)?您是否嘗試過經典/集成模式(IIS)? – 2013-04-24 19:48:11

+0

是的所有的HTTP方法都出現這個錯誤。我在IIS 7.5中使用集成模式。 – user621504 2013-04-25 01:47:26

+0

您是否解決了這個問題?我現在有相同的... – Slauma 2013-05-28 18:04:47

回答

0

更改爲:

<validation validateIntegratedModeConfiguration="false" /> 
<modules> 
    <remove name="WebDAVModule"/> 
</modules> 
<handlers> 
    <remove name="WebDAV"/> 
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
    <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> 
    <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> 
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
</handlers> 
1

這個工作對我來說:

<remove name="WebDAV"/> 

我不知道爲什麼它被安裝在服務器上。但是,這似乎與擴展名的處理程序

從IIS(http://www.iis.net/learn/install/installing-publishing-technologies/installing-and-configuring-webdav-on-iis)干擾:

微軟發佈了一個新的WebDAV擴展模塊,它是完全 改寫爲Internet Information Services(IIS)7及以上的 的Windows Server®2008.這個新的WebDAV擴展模塊包含了許多新功能,使Web作者能夠比以前更好地發佈內容,併爲Web管理員提供了更多的安全性和配置選項。微軟已經發布了針對WindowsServer®2008的WebDAV 擴展模塊的更新,該擴展模塊提供了共享鎖和 排他鎖支持,以防止由於覆蓋導致丟失更新。

1

此另一個潛在原因是,如果

GlobalConfiguration.Configure(WebApiConfig.Register); 

是後

RouteConfig.RegisterRoutes(RouteTable.Routes); 
中的global.asax.cs

它需要之前,否則默認RouteConfig路由'吃'WebAPI路由 - 並嘗試將API請求映射到稱爲API的控制器...

相關問題