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

7
我建立了一个基本的RESTful Web服务以便接收事件。我可以在本地IIS上运行这个服务,但是在将其发布到服务器上的IIS 10时出现以下错误:

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

我将应用程序池的"Managed Pipeline Mode"设置为集成,并在应用程序功能中启用目录浏览。我的Web配置文件如下:
<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 会返回404错误(例如xx.x.xxx.x/api/Controller/Action)。

@christok 是的,显然如果在.NET之后安装了IIS,则必须返回服务器角色/功能并启用.NET 4.6 - john smith
问题:如果已经安装了.Net和IIS角色/功能,我需要重新安装吗? - Micah Armantrout
@MicahArmantrout 不应该这样做。返回角色/功能,查找 .Net 并查看是否已选中/启用 4.6。 - john smith
已启用并安装了IIS,但我仍然遇到此错误。 - Micah Armantrout
我注意到我的应用程序是为4.5而不是4.6,所以也许我需要安装4.5。 - Micah Armantrout
3个回答

18

使用 IIS 10 和 .NET 4.6

  1. 添加角色和功能
  2. 打开 WEB 服务器 IIS 的子节点
  3. 在 Web 服务器下,打开应用程序开发的节点
  4. 选择 ".NET Extensibility 4.6"、"ASP.NET 4.6"

这些步骤可解决问题。


3
在Windows 10中,我可以通过以下方式解决这个问题:
  1. 控制面板 > 程序和功能 > 打开或关闭Windows功能
  2. 移除.NET Framework 4.7高级服务 > ASP.NET 4.7
  3. 重新添加

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接