IIS 10上的Web API(处理程序“ExtensionlessUrlHandler-Integrated-4.0”有一个错误的模块“ManagedPipelineHandler”)

时间:2017-08-02 17:12:15

标签: c# asp.net iis asp.net-web-api

我构建了一个基本的RESTful Web服务,以便我可以接收事件。我可以在本地IIS上运行这个,但在服务器上的IIS 10中发布时会出现以下错误

  

HTTP错误500.21 - 内部服务器错误   处理程序“ExtensionlessUrlHandler-Integrated-4.0”有一个错误的模块“ManagedPipelineHandler”

我在应用程序功能中将应用程序池托管管道模式设置为集成并启用了目录浏览。我的网络配置如下所示:

<system.webServer>
<modules>
  <remove name="UrlRoutingModule-4.0" />
  <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
<handlers>
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <remove name="OPTIONSVerbHandler" />
  <remove name="TRACEVerbHandler" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

如果我将应用程序池托管管道模式更改为“经典”,我实际上可以看到根站点,但尝试浏览或调用API会产生404s(例如xx.x.xxx.x / api / Controller / Action )。

3 个答案:

答案 0 :(得分:5)

使用IIS 10和.NET 4.6

  1. 添加角色和功能
  2. 打开WEB服务器IIS的子节点
  3. 在“Web服务器”下,打开“应用程序开发”节点
  4. 选择&#34; .NET可扩展性4.6&#34;,&#34; ASP.NET 4.6&#34;
  5. 这些解决了这个问题。

答案 1 :(得分:0)

对于遇到此问题的其他任何人,我在Server 2016上安装了ASP.net 4.6,添加删除角色,这解决了我的问题。

答案 2 :(得分:0)

在Windows 10中,我可以通过以下方式解决此问题:

  1. 控制面板>程序和功能>打开或关闭Windows功能
  2. 删除.NET Framework 4.7高级服务> ASP.NET 4.7
  3. 重新添加