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

问题描述 投票:179回答:18

我有一个由Visual Studio 2013构建的简单Web API。当我从VS13运行它时效果很好但是当我在本地IIS中复制项目时它会给我以下错误。

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

详细错误信息:

模块IIS Web核心

通知BeginRequest

处理程序尚未确定

错误代码0x80070021

配置错误此配置部分不能在此路径中使用。当该部分被锁定在父级别时会发生这种情况。锁定是默认情况下(overrideModeDefault =“Deny”),或由locationMode =“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
18个回答
309
投票

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

Windows Server 2012,IIS 8.5。也适用于其他版本。

  • 转到服务器管理器,单击“添加角色和功能”
  • 在角色部分中选择:Web服务器 在安全子部分下选择所有内容(我排除了摘要,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身份验证 - 如果您使用其中任何一个

2
投票

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

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

1
投票

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


0
投票

<staticContent />行并从web.config中删除它。


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 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

0
投票

对于Windows Server上的.NET Core应用程序(在我的情况下,2012年使用IIS 10),它在安装.NET Core Windows Server Hosting软件包(link)后起作用。


0
投票

检查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问题。


0
投票

我修复了删除匿名身份验证。 只需在您的Web配置IIS中注释即可

<security>          
    <!--
    <authentication>
        <anonymousAuthentication userName=""/>
    </authentication>
    -->
</security> 

-1
投票

-3
投票

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


102
投票

尝试在空的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激活”


44
投票

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

以下是解决方案的步骤:

  1. C:\Windows\System32\inetsrv\config\applicationHost.config并在记事本中打开
  2. 更改以下键值 <section name="handlers" overrideModeDefault="Deny" />将此值从“拒绝”更改为“允许” <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />将此值从“拒绝”更改为“允许”

它对我有用。


31
投票

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

以下是如何执行此操作:如果您正在使用.net framework v4,请以管理员身份打开命令提示符,并使用以下命令将目录更改为.net框架基本文件夹:

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替换为相应的文件夹名称即可。

希望这可以帮助。


20
投票

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

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

enter image description here


9
投票

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

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

单击确定。


4
投票

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

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

有关部分锁定以及父配置上下文引用IIS documentation的更多信息。


4
投票

在我的情况下,有IIS URL Rewrite模块的规则,但我没有安装该模块。如果包含但未安装任何模块,则应检查web.config。


3
投票

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

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

有用!

© www.soinside.com 2019 - 2024. All rights reserved.