Asp.net web api .Net Web API未找到与请求URI匹配的HTTP资源

Asp.net web api .Net Web API未找到与请求URI匹配的HTTP资源,asp.net-web-api,iis-7.5,Asp.net Web Api,Iis 7.5,我正在使用.Net Web API,该API在调试和本地主机IIS中运行良好,但当我将其发布到服务器时,它开始出现以下错误:- “消息”:“未找到与请求URI匹配的HTTP资源 GlobalConfiguration.Configure(WebApiConfig.Register); 在服务器上,此API的默认站点下有应用程序文件夹,但它在本地IIS的默认站点下的应用程序文件夹中工作正常,所以这应该不是问题所在 GlobalConfiguration.Configure(Web

我正在使用.Net Web API,该API在调试和本地主机IIS中运行良好,但当我将其发布到服务器时,它开始出现以下错误:-
“消息”:“未找到与请求URI匹配的HTTP资源

    GlobalConfiguration.Configure(WebApiConfig.Register);
在服务器上,此API的默认站点下有应用程序文件夹,但它在本地IIS的默认站点下的应用程序文件夹中工作正常,所以这应该不是问题所在

    GlobalConfiguration.Configure(WebApiConfig.Register);
现在,我尝试在处理程序中设置以下url中指定的适当动词,但没有成功:

    GlobalConfiguration.Configure(WebApiConfig.Register);
此外,我已经在服务器上安装了MVC4,如以下url所示:

    GlobalConfiguration.Configure(WebApiConfig.Register);
同样是WebDav模块,处理程序可能会给出错误,所以我也尝试删除它,但它给出了相同的错误

    GlobalConfiguration.Configure(WebApiConfig.Register);
以下是模块的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>
    GlobalConfiguration.Configure(WebApiConfig.Register);

我没有在任何地方玩路由。我是否缺少关于web.config或服务器IIS中的设置/配置的内容?

更改为:

<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>
    GlobalConfiguration.Configure(WebApiConfig.Register);

这对我很有用:

<remove name="WebDAV"/>
    GlobalConfiguration.Configure(WebApiConfig.Register);

我不知道为什么它被安装在服务器上。但这似乎干扰了无扩展处理程序

    GlobalConfiguration.Configure(WebApiConfig.Register);
从IIS():

    GlobalConfiguration.Configure(WebApiConfig.Register);
微软发布了一个全新的WebDAV扩展模块,该模块已完全升级 在上为Internet信息服务(IIS)7及以上版本重写 Windows Server®2008。此新的WebDAV扩展模块包含 许多新功能使Web作者能够更好地发布内容 与以前相比,它为Web管理员提供了更多的安全性和灵活性 配置选项。Microsoft已发布WebDAV的更新 用于Windows Server®2008的扩展模块,提供共享和 独占锁支持,防止由于覆盖而丢失更新

    GlobalConfiguration.Configure(WebApiConfig.Register);

另一个可能的原因是

    GlobalConfiguration.Configure(WebApiConfig.Register);
追求

    GlobalConfiguration.Configure(WebApiConfig.Register);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
在global.asax.cs中

    GlobalConfiguration.Configure(WebApiConfig.Register);

它必须在之前,否则默认RouteConfig路由会“吃掉”WebAPI路由-并尝试将API请求映射到名为API的控制器…

是否所有HTTP方法都会出现此错误,基本上是任何路由,还是只有特定的动词(如PUT和DELETE)?您是否尝试过经典/集成模式(IIS)?是的,所有HTTP方法都出现此错误。我正在IIS 7.5中使用集成模式。您解决了问题吗?我现在也有相同的问题…对我来说,问题的原因是缺少程序集:。也许您可以在Kiran Challa的测试代码的帮助下在项目中检查此问题:
    GlobalConfiguration.Configure(WebApiConfig.Register);