我有一个由 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" />
得到完全相同的错误并提出了这个问题。正如@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 身份验证 - 如果您使用其中任何一个
尝试在空的 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”
我也遇到了同样的问题,但是在与 IIS 和谷歌进行了数小时的头脑风暴之后。我找到了解决方案。此错误是因为在 IIS applicationHost.config
中禁用了某些设置。
以下是解决的步骤:
转到 C:\Windows\System32\inetsrv\config\applicationHost.config 并在记事本中打开 更改 中的以下键值,将此值从“拒绝”更改为“ Allow" 将此值从“Deny”更改为“Allow”
它对我有用。
如果您是第一次在该计算机上运行 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
替换为适当的文件夹名称。
希望这可以帮助。
我通过执行以下操作解决了这个问题:
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
在 Windows 8.1、IIS 8.5 上,我的解决方案是从控制面板注册 4.5:
程序和功能 > 打开或关闭 Windows 功能 > 信息信息服务 > 万维网服务 > 应用程序开发功能 > 选择 ASP.NET 4.5
单击确定。
如果是 Windows 10,则以管理员身份打开 powershell 并运行以下命令:
dism /online /enable-feature /all /featurename:IIS-ASPNET45
在 Windows 8.1 或 10 上包括 .Net framework 4.5 或更高版本,如下所示
https://i.stack.imgur.com/5JB1H.png
正如错误所表明的那样 - “当该部分被锁定在父级别时会发生这种情况”。要解锁该部分,您可以使用 appcmd.exe 并执行以下命令:
%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/handlers -commitpath:apphost
有关部分锁定和父配置上下文是什么的更多信息,请参阅 IIS documentation。
在我们的案例中,我们为这个错误苦苦挣扎了好几天。事实证明,在控制面板、程序中,打开或关闭 Windows 功能。
我们选择了 Internet 信息服务、万维网服务、应用程序开发功能,并在那里检查与我们的开发环境相关的一组功能。例如:ASP.NET 4.6。 .NET 可扩展性 4.6 等
有用!
尝试在服务器级别解锁相关的 IIS (7.5) 配置设置,如下:
打开 IIS 管理器 在 Connections 窗格中选择服务器 在主窗格中打开 Configuration Editor 在 Sections 下拉列表中,选择要解锁的部分,例如 system.webServer > defaultPath 单击右侧窗格中的 Unlock Attribute 重复您需要的任何其他设置解锁重新启动 IIS(可选)- 在“连接”窗格中选择服务器,单击“操作”窗格中的重新启动
就我而言,IIS URL Rewrite 模块有规则,但我没有安装该模块。如果包含但未安装任何模块,您应该检查您的 web.config。
您的 web.config 描述您正在使用表单身份验证 - 确保在 IIS 中的身份验证菜单下启用表单身份验证并禁用匿名身份验证,以用于在 IIS 中运行的网站。
请将 <staticContent />
行从 web.config 中删除。
好吧,我们正在使用 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
检查 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 问题。
在 win 2016 框中将 IIS7 迁移到 IIS 10 时出现错误代码 0x80070021。 .以下步骤帮助我修复它。 source
手动将以下设置的值从“拒绝”更改为“允许”
%windir%\system32\inetsrv\config\ applicationHost.config
在 section:system.webServer
下
<section name="handlers" overrideModeDefault="Deny" />
今天在 Windows 2016 Core 服务器上遇到了这个问题,我通过确保按照 GIOESCOM 所述安装组件来解决了这个问题,然后我修复了针对 .NET Core 3.1、.NET 5 和 .NET 6 的 SDK,它解决了问题和 ASP.NET 4.7.2 MVC Web 应用程序工作。
对我有用的解决方案是删除我当前的 Web.config 并添加一个新的。这为我解决了问题