【问题标题】:.Net Web API No HTTP resource was found that matches the request URI.Net Web API 未找到与请求 URI 匹配的 HTTP 资源
【发布时间】:2013-04-24 12:48:08
【问题描述】:

我正在开发 .Net Web API,它在调试和本地 IIS 上都可以正常工作,但是当我将它发布到服务器时,它开始出现以下错误:-
"Message": "没有找到与请求 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 中的设置/配置的内容?

【问题讨论】:

  • 是所有 HTTP 方法都给你这个错误,基本上是任何路由,还是只有特定的动词(例如 PUT 和 DELETE)?您是否尝试过经典/集成模式 (IIS)?
  • 是的,所有 HTTP 方法都出现此错误。我在 IIS 7.5 中使用集成模式。
  • 问题解决了吗?我现在也是这样……
  • 对我来说,问题的原因原来是缺少程序集:stackoverflow.com/a/16825254/270591。也许您可以借助 Kiran Challa 的测试代码在您的项目中检查这一点:stackoverflow.com/a/16674992/270591

标签: asp.net-web-api iis-7.5


【解决方案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 管理员提供更高的安全性和 配置选项。微软发布了 WebDAV 的更新 Windows Server® 2008 的扩展模块,提供共享和 独占锁支持以防止由于覆盖而丢失更新。

【讨论】:

    【解决方案2】:

    另一个潜在的原因是如果

        GlobalConfiguration.Configure(WebApiConfig.Register);
    

    在之后

        RouteConfig.RegisterRoutes(RouteTable.Routes);
    

    在 global.asax.cs 中

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

    【讨论】:

      【解决方案3】:

      改为:

      <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>
      

      【讨论】:

        猜你喜欢
        • 2017-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多