我有一个由Visual Studio 2013构建的简单webAPI。当我从VS13运行它时效果很好但是当我在本地IIS中复制项目时它会给我以下错误。
HTTP错误500.19 - 内部服务器错误请求的页面不能 访问,因为页面的相关配置数据是 无效。
详细错误信息:
模块 IIS Web Core
通知 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" />
答案 0 :(得分:293)
得到了完全相同的错误,并提出了这个问题。正如@SpaceBison在评论中提到的,这个答案描述了解决方案 - https://stackoverflow.com/a/12867753/404099。我发现它太晚了,它错过了一些步骤。这对我有用:
Windows Server 2012,IIS 8.5 。也适用于其他版本。
答案 1 :(得分:97)
尝试在空的ASP.NET应用程序中托管WCF服务时出现此错误。整个解决方案是在Windows 8.1上运行的IIS 8.5上使用.NET 4.5平台。 问题是
系统会要求您重新启动系统。
这应该修复HTTP 500.19!
编辑11-FEB-2016 刚刚在Windows 10 Pro,IIS 10上遇到问题,这一次,它是一个HTTP 404.0。修复仍然是相同的,打开&#34; HTTP激活&#34;在Windows功能下 - &gt; .NET Framework 4.6高级服务 - &gt; WCF服务 - &gt; HTTP激活
答案 2 :(得分:42)
我也遇到了同样的问题,但在用IIS和谷歌进行了几个小时的脑力激荡之后。我找到了解决方案。
此错误是因为IIS applicationHost.config
中禁用了某些设置。
以下是解决方案的步骤:
C:\Windows\System32\inetsrv\config\applicationHost.config
并在记事本中打开更改
中的以下键值 <section name="handlers" overrideModeDefault="Deny" />
从&#34; Deny&#34;更改此值到&#34;允许&#34;
<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />
从&#34; Deny&#34;更改此值到&#34;允许&#34;
它对我有用。
答案 3 :(得分:30)
如果您是第一次在该计算机上运行IIS,则应尝试运行ASP.NET IIS注册工具(aspnet_regiis.exe)。
在这里&#39>如何做到这一点: 如果您正在使用.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
替换为相应的文件夹名称。
希望这有帮助。
答案 4 :(得分:20)
答案 5 :(得分:8)
在Windows 8.1,IIS 8.5上,我的解决方案是从控制面板注册4.5:
程序和功能&gt;打开或关闭Windows功能&gt;信息信息服务&gt;万维网服务&gt; <应用程序开发特征>选择ASP.NET 4.5
单击“确定”。
答案 6 :(得分:4)
当错误记录时 - “当该部分被锁定在父级别时会发生这种情况”。要解锁该部分,您可以使用appcmd.exe并执行以下命令:
%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/handlers -commitpath:apphost
有关部分锁定的更多信息以及父配置上下文引用的内容IIS documentation。
答案 7 :(得分:3)
就我而言,IIS URL Rewrite模块有规则,但我没有安装该模块。如果包含但未安装任何模块,则应检查web.config。
答案 8 :(得分:2)
尝试在服务器级解锁相关的IIS(7.5)配置设置,如下所示:
答案 9 :(得分:2)
在我们的案例中,我们在这个错误中挣扎了好几天。事实证明,在控制面板,程序中,打开或关闭Windows功能。
我们选择了Internet信息服务,万维网服务,应用程序开发功能,并检查了与我们的开发环境相关的功能集。例如:ASP.NET 4.6。 .NET可扩展性4.6等。
有效!
答案 10 :(得分:1)
您的web.config描述您正在使用表单身份验证 - 确保在身份验证菜单下的IIS中启用表单身份验证和禁用匿名身份验证在IIS中运行。
答案 11 :(得分:1)
如果是Windows 10,则以管理员身份打开Powershell并运行以下命令:
dism /online /enable-feature /all /featurename:IIS-ASPNET45
答案 12 :(得分:0)
请<staticContent />
行并从web.config中删除它。
答案 13 :(得分: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
答案 14 :(得分:0)
对于Windows Server上的.NET核心应用程序(在我的情况下,2012年使用IIS 10),它在安装.NET Core Windows Server Hosting软件包(link)之后工作。
答案 15 :(得分: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问题。
答案 16 :(得分:0)
我通过删除anonymousAuthentication进行了修复。
只需在您的Web配置IIS中添加评论
<security>
<!--
<authentication>
<anonymousAuthentication userName=""/>
</authentication>
-->
</security>
答案 17 :(得分:0)
答案 18 :(得分:0)
在 win 2016 box 中将 IIS7 迁移到 IIS 10 时,我收到错误代码 0x80070021。 . 以下步骤帮助我修复它。 source
手动将以下设置的值从“拒绝”更改为“允许”
%windir%\system32\inetsrv\config\ applicationHost.config
在section:system.webServer
下
<section name="handlers" overrideModeDefault="Deny" />
答案 19 :(得分:-1)
答案 20 :(得分:-3)
对我有用的解决方案是删除我当前的Web.config并添加一个新的。这解决了我的问题