【问题标题】:Web API On IIS 10 (Handler "ExtensionlessUrlHandler-Integrated-4.0" has a bad module "ManagedPipelineHandler")IIS 10 上的 Web API(处理程序“ExtensionlessUrlHandler-Integrated-4.0”有一个错误模块“ManagedPipelineHandler”)
【发布时间】:2018-01-10 01:09:22
【问题描述】:

我构建了一个基本的 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 会出现 404(例如 xx.x.xxx.x/api/Controller/Action )。

【问题讨论】:

  • @christok 是的,显然如果 IIS 是在 .NET 之后安装的,那么您必须返回服务器角色/功能并启用 .NET 4.6
  • 问题 .Net 已安装以及角色/功能中的 IIS 是否需要重新安装?
  • @MicahArmantrout 不应该。回到角色/功能,找到 .Net 看看 4.6 是否勾选/启用
  • 它已启用并安装了 IIS,但我仍然收到此错误
  • 我确实注意到我的应用程序适用于 4.5 而不是 4.6,所以也许我需要安装 4.5

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    使用 IIS 10 和 .NET 4.6

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

    这些解决了问题。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2013-06-13
        • 1970-01-01
        • 2011-10-14
        • 2012-01-29
        • 2013-07-02
        • 1970-01-01
        • 2015-10-06
        • 1970-01-01
        • 2019-05-19
        相关资源
        最近更新 更多