【问题标题】:HTTP Error 500.19 and error code : 0x80070021HTTP 错误 500.19 和错误代码:0x80070021
【发布时间】:2013-12-01 15:28:06
【问题描述】:

我有一个由 Visual Studio 2013 构建的简单 webAPI。当我从 VS13 运行它时它运行良好,但是当我在本地 IIS 中复制项目时,它给了我以下错误。

HTTP 错误 500.19 - 内部服务器错误 无法访问请求的页面 访问,因为该页面的相关配置数据是 无效。

详细错误信息:

模块 IIS Web 核心

通知开始请求

处理程序尚未确定

错误码 0x80070021

配置错误 此配置部分不能用于此路径。当该部分锁定在父级别时会发生这种情况。默认情况下锁定 (overrideModeDefault="Deny"),或者由具有 overrideMode="Deny" 或旧版 allowOverride="false" 的位置标记显式设置。

配置文件 \?\C:\inetpub\wwwroot\APITeslin\web.config

配置来源:

36:   <system.webServer>  
37:     <handlers>  
38:       <remove name="ExtensionlessUrlHandler-Integrated-4.0" />

【问题讨论】:

标签: asp.net-mvc iis asp.net-web-api asp.net-mvc-5 iis-8


【解决方案1】:

在 win 2016 框中将 IIS7 迁移到 IIS 10 时出现错误代码 0x80070021。 . 以下步骤帮助我修复它。 source

在以下设置中手动将值从“拒绝”更改为“允许”

%windir%\system32\inetsrv\config\ applicationHost.config

section:system.webServer

<section name="handlers" overrideModeDefault="Deny" />

【讨论】:

    【解决方案2】:

    在 Windows 8.1 或 10 上包括 .Net framework 4.5 或更高版本,如下所示

    【讨论】:

    • 这是在Windows 8或10上工作时的具体解决方案,解决了我整天纠结的问题,谢谢!
    【解决方案3】:

    如果是 windows 10 则以管理员身份打开 powershell 并运行以下命令:

    dism /online /enable-feature /all /featurename:IIS-ASPNET45
    

    【讨论】:

      【解决方案4】:

      我在尝试在空的 ASP.NET 应用程序中托管 WCF 服务时遇到此错误。整个解决方案使用 .NET 4.5 平台,在 Windows 8.1 上运行的 IIS 8.5 上。 问题是

      1. 打开“打开或关闭 Windows 功能”

      2. 转到 ASP.NET 4.5 高级服务下的 WCF 部分

      3. 检查 HTTP 激活。

      4. 系统会要求您重新启动系统。

      这应该会修复 HTTP 500.19!

      EDIT 11-FEB-2016 刚刚在 Windows 10 Pro、IIS 10 上遇到问题,这次是 HTTP 404.0。修复还是一样,在Windows Features -> .NET Framework 4.6 Advanced Services -> WCF Services -> HTTP Activation下开启“HTTP Activation”

      【讨论】:

      • 非常感谢@dotnetguy! :-) 它也对我有用。当我尝试在 Empty ASP.NET 应用程序上托管 Web API 2.2 和 MVC 时出现错误。
      • @dotnetguy 在我无法让 IIS 与我在 Visual Studio 中的本地 MVC 应用程序一起工作后,这正是帮助我的原因。非常感谢。 HTTP 激活就是这样!
      • @silkfire 很高兴它有帮助!
      • @dotnetguy 谢谢
      • @dotnetguy 遇到了同样的问题,这解决了!非常感谢!你真的是一个 .Net 人! :D
      【解决方案5】:

      检查 IIS 服务器是否安装了 URL 重写功能。
      如果未安装,请确保您的 web.config 文件没有 URL 重写相关配置

      <!-- Make sure don't have below config, if server have not installed url rewrite feature. -->
      <rewrite>
        <rules>
          <rule name="Fail bad requests">
            <match url=".*"/> ...
      

      有时我们从旧服务器复制配置并直接部署到全新服务器,然后我们可能会遇到此类 500 问题。

      【讨论】:

      • 如果 URL Rewrite 缺失,错误码不会是 0x80070021。
      【解决方案6】:

      对我有用的解决方案是删除我当前的 Web.config 并添加一个新的。这为我解决了问题

      【讨论】:

      • 辞去工作比创建新的 web.config 更容易。永远不要尝试这样做。
      【解决方案7】:

      就我而言,IIS URL Rewrite 模块有规则,但我没有安装该模块。如果包含但未安装任何模块,您应该检查您的 web.config。

      【讨论】:

      • 刚刚安装了所有需要的东西,但仍然无法正常工作。然后,我刚刚安装了 URL Rewrite 模块,并让它工作了!谢谢!
      • 如果缺少 URL Rewrite 模块,错误码不会是 0x80070021。
      【解决方案8】:

      得到完全相同的错误并提出了这个问题。正如 cmets 中提到的@SpaceBison,这个答案描述了解决方案 - https://stackoverflow.com/a/12867753/404099。我发现它太晚了,它错过了一些步骤。这对我有用:

      Windows Server 2012、IIS 8.5。应该也适用于其他版本。

      • 进入服务器管理器,点击添加角色和功能
      • 在角色部分选择:Web 服务器
        • 在安全子部分下选择所有内容(我排除了摘要、IP 限制和 URL 授权,因为我们不使用它们)
        • 在应用程序开发下选择 .NET Extensibility 4.5、ASP.NET 4.5 和两个 ISAPI 条目
      • 在功能部分选择:NET 3.5、.NET 4.5、ASP.NET 4.5
      • 在 Web 服务器部分选择:Web 服务器(全部)、管理工具(IIS 管理控制台和管理服务)、Windows 身份验证 - 如果您使用其中任何一个

      【讨论】:

      • 我只需要添加 AppDev 部分和 Features 部分中的 .NET 4.5 项目。可扩展性项也强制了 2 个 ISAPI 条目。
      • 这些步骤可以帮助我解决问题。谢谢。
      • 最后,一个解决我小病痛的方法。谢谢,这是有道理的,而且很简单。这些天似乎总是缺少功能和角色......
      • ServerManager 在 Windows7 Home 中不可用,如何解决?
      • @knocte - 在 Windows 7 中,您可以输入“卸载或更改程序”,然后点击“打开或关闭 Windows 功能”。这和服务器管理器不一样,但是你可以通过这种方式安装IIS和相关功能。
      【解决方案9】:

      我也遇到了同样的问题,但是在与 IIS 和谷歌进行了数小时的头脑风暴之后。我找到了解决方案。 此错误是因为 IIS applicationHost.config 中禁用了某些设置。

      以下是解决的步骤:

      1. 转到C:\Windows\System32\inetsrv\config\applicationHost.config并在记事本中打开
      2. 更改

        中存在的以下键值
        • &lt;section name="handlers" overrideModeDefault="Deny" /&gt; 将此值从“拒绝”更改为“允许”

        • &lt;section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" /&gt; 将此值从“拒绝”更改为“允许”

      它对我有用。

      【讨论】:

      【解决方案10】:

      在我们的案例中,我们为这个错误苦苦挣扎了好几天。事实证明,在控制面板、程序中,打开或关闭 Windows 功能。

      我们选择了 Internet 信息服务、万维网服务、应用程序开发功能,并在那里检查与我们的开发环境相关的一组功能。例如:ASP.NET 4.6。 .NET 可扩展性 4.6 等

      有效!

      【讨论】:

      • 这也解决了我的问题。所以问题最终是在将 IIS 添加到我的本地计算机后,我没有启用正确的功能。这解决了它。谢谢。
      【解决方案11】:

      它有效并且节省了我的时间。试试看HTTP Error 500.19 – Internal Server Error – 0x80070021 (IIS 8.5)

      【讨论】:

        【解决方案12】:

        我通过以下方式解决了这个问题:

        WebServer(ISS)->WebServer->Application Development
        add .NET Extensibility 3.5
        add .NET Extensibility 4.5
        add ASP.NET 4.5
        add ISAPI Extensions
        add ISAPI Filters
        

        【讨论】:

          【解决方案13】:

          嗯,我们正在使用 Amazon Web Services,因此我们希望使用脚本和程序来解决这个问题。所以我一直在寻找一个命令行工具。所以首先我尝试了跑步的技巧

          c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

          但因为我运行的是基于云的 Windows Server 2012,所以它抱怨

          This option is not supported on this version of the operating system. Administrators should instead install/uninstall ASP.NET 4.5 with IIS8 using the "Turn Windows Features On/Off" dialog, the Server Manager management tool, or the dism.exe command line tool. For more details please see http://go.microsoft.com/fwlink/?LinkID=216771.

          我用谷歌搜索并找到了官方Microsoft Support Page KB2736284。于是就有了命令行工具dism.exe。所以我尝试了以下

          dism /online /enable-feature /featurename:IIS-ASPNET45

          但是它抱怨并给出了一个功能名称列表来尝试,所以我一个一个地尝试了它们,我在每个之后测试了我的 WebAPI 网页,它在列表中的最后一个之后工作。

          dism /online /enable-feature /featurename:IIS-ApplicationDevelopment
          dism /online /enable-feature /featurename:IIS-ISAPIFilter 
          dism /online /enable-feature /featurename:IIS-ISAPIExtensions 
          dism /online /enable-feature /featurename:IIS-NetFxExtensibility45 
          

          现在我可以浏览到我的 WebAPI 站点并查看 API 信息。这应该可以帮助一些人。 [但是,我自己还没有完全摆脱困境,我无法从盒子外面访问网站。仍在努力。]

          另外,我根据其他人的回复做了一些较早的步骤。我可以确认以下功能委派需要更改(尽管我想为这些找到一个命令行工具)。

          In Feature delegation
          
          Change 
          'Handler Mappings' from Read Only to Read/Write
          
          Change 
          'Modules' from Read Only to Read/Write
          
          Change 
          'SSL Settings' from Read Only to Read/Write
          

          【讨论】:

            【解决方案14】:

            尝试在服务器级别解锁相关的IIS(7.5)配置设置,如下:

            1. 打开 IIS 管理器
            2. 在“连接”窗格中选择服务器
            3. 在主窗格中打开配置编辑器
            4. 在“部分”下拉列表中,选择要解锁的部分,例如system.webServer > defaultPath
            5. 点击右侧窗格中的解锁属性
            6. 对需要解锁的任何其他设置重复此操作
            7. 重新启动 IIS(可选)- 在“连接”窗格中选择服务器,单击“操作”窗格中的重新启动

            【讨论】:

            • 这几乎很有帮助,但在 IIS 7 上,system.webServer 下没有“defaultPath”
            • 他的意思是,如果您要更新 Windows 身份验证,那么您将在路径 system.webServer -> 安全 -> 身份验证中找到它。
            【解决方案15】:

            在 Windows 8.1 和 IIS 8.5 上,我的解决方案是从控制面板注册 4.5:

            程序和功能 > 打开或关闭 Windows 功能 > 信息信息服务 > 万维网服务 > 应用程序开发功能 > 选择 ASP.NET 4.5

            点击确定。

            【讨论】:

            • 在 Windows 10 下的选择是 'ASP'、ASP.NET.35.' 和 'ASP.NET 4.6'。检查 4.6 对我有用。谢谢!
            • 我认为这是最简洁易懂的答案。
            【解决方案16】:

            &lt;staticContent /&gt; 行并将其从 web.config 中删除。

            【讨论】:

              【解决方案17】:

              如果您是第一次在该计算机上运行 IIS,您应该尝试运行 ASP.NET IIS 注册工具 (aspnet_regiis.exe)。

              以下是如何做到这一点: 如果您使用的是 .net framework v4,请以管理员身份打开命令提示符,然后使用以下命令将目录更改为您的 .net framework 基本文件夹:

              CD C:\Windows\Microsoft.NET\Framework\v4.0.30319
              

              或者,如果您使用的是 64 位计算机,请使用:

              CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319
              

              当您成功导航到适当的目录后,使用以下命令执行 ASP.NET IIS 注册工具:

              aspnet_regiis -i
              

              如果您使用不同的 .NET 框架版本,只需将 v4.0.30319 替换为适当的文件夹名称即可。

              希望这会有所帮助。

              【讨论】:

              • 我正在尝试在我的 iis 服务器(虚拟机)上运行两个不同的 VS 项目;一个有效,一个无效……以上帮助了第一个工作;有什么理由第二个不应该工作吗?
              • 我过去使用过这种方法,但 Windows 8.1 不再支持 aspnet_regiis。要注册 4.5,请使用程序和功能 > 打开或关闭 Windows 功能 > 信息信息服务 > 万维网服务 > 应用程序开发功能 > 检查 ASP.NET 4.5 以及您可能需要的任何其他内容。
              • 这需要以管理员身份运行(右键单击cmd.exe图标->以管理员身份运行),即使它可以在操作过程中检测到错误(并生成日志文件),它也可以工作给我!
              • 对于 Windows 8.1(或 Windows Server 2012)上的 IIS 8.5,这不起作用。得到如下提示:C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis.exe -i 开始安装ASP.NET(4.0.30319.33440)。此版本的操作系统不支持此选项。管理员应该使用“打开/关闭 Windows 功能”对话框、服务器管理器管理工具或 dism.exe 命令行工具来安装/卸载带有 IIS8 的 ASP.NET 4.5。
              • 谢谢!!它适用于 IIS 10 和 Windows 10 :)
              【解决方案18】:

              正如错误所表明的那样 - “当该部分被锁定在父级别时会发生这种情况”。要解锁该部分,您可以使用appcmd.exe 并执行以下命令:

              %windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/handlers -commitpath:apphost
              

              有关节锁定和父配置上下文是什么的更多信息,请参阅IIS documentation

              【讨论】:

                【解决方案19】:

                您的 web.config 描述了您正在使用 forms 身份验证 - 确保在 IIS 的 Authentication 菜单下为网站启用 forms 身份验证和 disable 匿名身份验证在 IIS 中运行。

                【讨论】:

                  猜你喜欢
                  • 2016-07-09
                  • 2019-03-06
                  • 2022-01-11
                  • 1970-01-01
                  • 2020-04-21
                  • 1970-01-01
                  • 2019-11-27
                  • 2015-05-16
                  • 1970-01-01
                  相关资源
                  最近更新 更多