ChatGPT解决这个技术问题 Extra ChatGPT

HTTP 错误 500.19 和错误代码:0x80070021

我有一个由 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" />
这很可能是在 IIS 中禁用了 Windows 身份验证,但在应用程序的 web.config 中是必需的。
@SpaceBison 如何在 IIS8 中启用窗口身份验证?
这是我的 webconfig 文件的链接。 icopter.co.uk/Webconfig.txt
您是否考虑过使用 URL 重写模块?

C
Community

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

Windows 服务器 2012,IIS 8.5。也应该适用于其他版本。

转到服务器管理器,单击添加角色和功能

在角色部分选择: Web 服务器 在安全子部分选择所有内容(我排除了摘要、IP 限制和 URL 授权,因为我们不使用它们) 在应用程序开发下选择 .NET Extensibility 4.5、ASP.NET 4.5 和两个 ISAPI 条目

在安全子部分下选择所有内容(我排除了摘要、IP 限制和 URL 授权,因为我们不使用它们)

在 Application Development 下选择 .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 和相关功能。
C
Community

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

打开“打开或关闭 Windows 功能”转到 ASP.NET 4.5 高级服务下的 WCF 部分检查 HTTP 激活。系统会要求您重新启动系统。

这应该修复 HTTP 500.19!

编辑 2016 年 2 月 11 日刚刚在 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
D
David Gardiner

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

以下是解决的步骤:

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

中的以下键值,将此值从“拒绝”更改为“ Allow"
将此值从“Deny”更改为“Allow”

它对我有用。


谢谢你。完成这些步骤后,出现下一个错误。我可以像这里描述的那样解决它:stackoverflow.com/a/30594003/434742
I
Ibrahim Dauda

如果您是第一次在该计算机上运行 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 :)
j
josliber

我通过执行以下操作解决了这个问题:

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

https://i.stack.imgur.com/K9ykp.png


J
Jon

在 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 对我有用。谢谢!
我认为这是最简洁易懂的答案。
C
CKE

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

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

D
DevLoverUmar

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

https://i.stack.imgur.com/5JB1H.png


这是在Windows 8或10上工作时的具体解决方案,解决了我整天苦苦挣扎的问题,谢谢!
神秘的错误 - 谢谢 - 你会认为他们会对框架进行健全性检查......
T
Taras Alenin

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

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

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


J
Javier Livio

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

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

有用!


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

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

打开 IIS 管理器 在 Connections 窗格中选择服务器 在主窗格中打开 Configuration Editor 在 Sections 下拉列表中,选择要解锁的部分,例如 system.webServer > defaultPath 单击右侧窗格中的 Unlock Attribute 重复您需要的任何其他设置解锁重新启动 IIS(可选)- 在“连接”窗格中选择服务器,单击“操作”窗格中的重新启动


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

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


刚刚安装了所有其他需要的东西,但仍然无法正常工作。然后,我刚刚安装了 URL Rewrite 模块,并让它工作了!谢谢!
如果缺少 URL Rewrite 模块,则错误代码不会是 0x80070021。
S
SpaceBison

您的 web.config 描述您正在使用表单身份验证 - 确保在 IIS 中的身份验证菜单下启用表单身份验证并禁用匿名身份验证,以用于在 IIS 中运行的网站。


E
Erdogan

请将 <staticContent /> 行从 web.config 中删除。


S
S Meaden

好吧,我们正在使用 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

F
Frank Myat Thu

检查 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。
M
Martin Brisiak

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

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

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

section:system.webServer

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

T
Trevor

今天在 Windows 2016 Core 服务器上遇到了这个问题,我通过确保按照 GIOESCOM 所述安装组件来解决了这个问题,然后我修复了针对 .NET Core 3.1、.NET 5 和 .NET 6 的 SDK,它解决了问题和 ASP.NET 4.7.2 MVC Web 应用程序工作。


o
ozil

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


P
Pheko Moroke

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


辞职比创建新的 web.config 更容易。永远不要尝试这样做。

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅