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


219

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

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

详细错误信息:

IIS Web核心模块

通知 BeginRequest

处理程序 尚未确定

错误代码 0x80070021

配置错误 此配置部分无法在此路径上使用。当节锁定在父级时,会发生这种情况。锁定默认情况下是(overrideModeDefault =“ Deny”),或者是由一个带有overlayMode =“ 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


@SpaceBison如何在IIS8中启用窗口身份验证?
Umar Abbas

这是我的webconfig文件的链接。 icopter.co.uk/Webconfig.txt
Umar Abbas

您是否考虑过使用URL重写模块?

Answers:


346

得到了完全相同的错误,并提出了这个问题。作为@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身份验证-如果正在使用其中的任何一种

13
我需要添加的只是AppDev部分和Features部分中的.NET 4.5项目。可扩展性项还强制了2个ISAPI条目。
比尔

这些步骤可以帮助我解决问题。谢谢。
psulek

最后,是解决我的疾病的解决方案。谢谢,这很有意义,而且很简单。这些天似乎总是缺少功能和角色……
Alexandru

ServerManager在Windows7 Home中不可用,如何解决?
knocte

1
@knocte-在Windows 7中,您可以输入“卸载或更改程序”,然后单击“打开或关闭Windows功能”。这与服务器管理器不同,但是可以通过这种方式安装IIS和相关功能。
伊利亚·巴拉奥夫斯基

122

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

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

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

  3. 检查HTTP激活。

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

    屏幕截图

这应该修复HTTP 500.19!

编辑11-FEB-2016在Windows 10 Pro,IIS 10上遇到了一个问题,这一次是HTTP 404.0。修复方法仍然相同,请在Windows功能-> .NET Framework 4.6高级服务-> WCF服务-> HTTP激活下打开“ HTTP激活”


非常感谢@dotnetguy!:-)它也为我工作。当我尝试在Empty ASP.NET应用程序上托管Web API 2.2和MVC时出现错误。
2015年

@dotnetguy这正是在使IIS无法与Visual Studio中的本地MVC应用程序一起使用之后为我提供的帮助。非常感谢。是HTTP激活
Silkfire

@silkfire很高兴它有所帮助!
Sudhanshu Mishra

@dotnetguy谢谢
Heemanshu Bhalla

@dotnetguy得到了相同的确切问题,这就解决了!非常感谢!您真的是一个.Net的家伙!:D
Rian

47

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

以下是解决步骤:

  1. 转到C:\Windows\System32\inetsrv\config\applicationHost.config并在记事本中打开
  2. 更改以下存在的键值

    • <section name="handlers" overrideModeDefault="Deny" /> 将此值从“拒绝”更改为“允许”

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

它为我工作。


2
谢谢。完成这些步骤后,出现下一个错误。我可以像这里描述的那样解决它:stackoverflow.com/a/30594003/434742
珍妮·奥莱利

31

如果是第一次在该计算机上运行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 Framework版本,则只需替换v4.0.30319为适当的文件夹名称即可。

希望这可以帮助。


我试图在iis服务器(虚拟机)上运行两个不同的VS项目;一个有效,一个无效。请问第二个为什么不起作用?
JosephDoggie 2014年

7
我过去曾经使用过这种方法,但是Windows 8.1不再支持aspnet_regiis。要注册4.5,请使用“程序和功能”>“打开或关闭Windows功能”>“信息信息服务”>“万维网服务”>“应用程序开发功能”>“检查ASP.NET 4.5”以及您可能需要的其他任何功能。
masterwok

1
这需要以管理员身份运行(右键单击cmd.exe图标->以管理员身份运行),即使它可以在操作过程中检测到错误(并生成日志文件),它也对我有用!
knocte

2
对于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。
Sudhanshu Mishra

谢谢!!它为我用IIS 10和Windows 10 :)
维克托贝尔特兰

22

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

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

在此处输入图片说明


10

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

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

单击确定。


3
在Windows 10下,选择“ ASP”,“ ASP.NET.35。”和“ ASP.NET 4.6”。检查4.6对我有用。谢谢!
PeterVermont

我认为这是最简洁,最容易理解的答案。
themefield '19

4

当错误出现时-“当节被锁定在父级时会发生这种情况”。要解锁该部分,您可以使用appcmd.exe并执行以下命令:

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

有关节锁定以及父配置上下文是什么的更多信息,请参考IIS文档


4

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

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

有用!


1
这也解决了我的问题。所以最终的问题是,在将IIS添加到本地计算机之后,我没有启用适当的功能。这样解决了。谢谢。
jbooker

3

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

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

这几乎是有帮助的,但是在IIS 7上,system.webServer下没有“ defaultPath”
Djorge

他的意思是,如果您要更新Windows身份验证,则可以在路径system.webServer-> Security-> Authentication中找到它。
2016年

3

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


1
刚刚安装了所有其他所需的东西,但仍然无法正常工作。然后,我刚刚安装了URL Rewrite模块,并使其开始工作!谢谢!
Vitox

如果缺少URL重写模块,则错误代码将不是0x80070021。
Lex Li

3

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

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

1

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



0

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

我搜索了Google,并找到了正式的Microsoft支持页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

-1

检查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重写,则错误代码将不会是0x80070021。
Lex Li


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.