2013-04-24 59 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的控制器...

相关问题