1942

我在将站点部署到服务器时遇到了错误。尝试在 IIS 中加载主页或访问新站点上的身份验证时,出现错误:

配置错误:此配置部分不能在此路径中使用。当该部分锁定在父级别时会发生这种情况。锁定是默认情况下 (overrideModeDefault="Deny") 或由具有 overrideMode="Deny" 或旧 allowOverride="false" 的位置标记显式设置的。

更多细节可以在这里找到,在场景 7中匹配我的十六进制错误代码。

上面链接站点上给出的解决方案是在applicationHost.config文件中我的错误中提到的部分中为 overrideModeDefault设置Allow 。就我而言,在system.webServer的Security下。但是,如果我查看本地计算机上的applicationHost.config,该站点已经正确部署,该部分设置为Deny

如果这个解决方案是正确的,我的本地实例如何在相同的web.config下运行得很好?根据我的applicationHost.config,该部分应该被锁定,但事实并非如此。我宁愿不更改applicationHost.config文件,因为该服务器上运行着许多其他站点。还有其他解决方案吗?

4

34 回答 34

3621

我有同样的问题。不记得我在网上是在哪里找到的,但这是我所做的:

  • 点击“开始按钮”
  • 在搜索框中,输入“打开或关闭 Windows 功能”
  • 在功能窗口中,单击:“Internet 信息服务”
  • 点击:“万维网服务”
  • 点击:“应用程序开发功能”
  • 检查(启用)这些功能。我检查了除了 CGI 之外的所有内容。

顺便说一句,我使用的是 Windows 7。多年来,许多评论都证明这一直适用于 Windows 10 和 Server 2019。

于 2012-10-12T22:06:11.817 回答
438

您还可以使用IIS 管理器来编辑这些设置。

关注这篇Learn IIS 文章

从 IIS 的根目录使用功能委派:

IIS 管理器中的功能委托图标

然后,您可以控制每个机器级别的读/写权限,否则会给您带来overrideMode="Deny"错误。

特征委托的使用示例

于 2012-09-09T21:28:00.420 回答
192

对于Windows Server 2012IIS 8,过程类似。

应该安装 and ,并且您Web Server (IIS)还应该在.Application ServerWeb Server (IIS) SupportApplication Server

MVC 的 Windows Server 2012 和 IIS 8 要求

于 2014-01-30T01:01:27.887 回答
165

浏览至“C:\Windows\System32\inetsrv\config”(此处需要管理员权限)打开 applicationHost.config

注意:在 IISExpress 和 Visual Studio 2015 中,applicationHost.config 存储在$(solutionDir).vs\config\applicationhost.config

找到错误消息页面的“配置源”部分中显示的部分。对我来说,这通常是“模块”或“处理程序”</p>

overrideModeDefault将属性更改为Allow

所以整行现在看起来像:

<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />

保存文件后,页面在我的浏览器中加载正常。

警告: 在 64 位 Windows 上编辑 applicationHost.config

于 2012-04-30T20:22:38.043 回答
79

您需要解锁处理程序。这可以使用以下 cmd 命令来完成:

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

对于在 IIS 8 上遇到此错误的人来说,可能还有另一个信息,在我的情况下是在 Microsoft Server 2012 平台上。我花了几个小时与执行 appcmd 后出现的其他错误作斗争。最后,我能够通过删除 Web 服务器角色并再次安装来修复它。

于 2012-12-06T21:17:40.197 回答
77

1.打开“打开或关闭windows功能”通过:WinKey+ R => “optionalfeatures” => OK

在此处输入图像描述

  1. 在“应用程序开发功能”下启用这些功能

在此处输入图像描述

在 Win 10 上测试 - 但可能也适用于其他 Windows 版本。

于 2017-02-23T09:40:33.803 回答
55

我从提升的命令提示符运行这两个命令:

%windir%/system32/inetsrv/appcmd unlock config /section:anonymousAuthentication

%windir%/system32/inetsrv/appcmd unlock config /section:windowsAuthentication
于 2014-11-18T11:22:44.143 回答
44

根据我对这个类似问题的回答

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

  1. 打开IIS 管理器
  2. 在“连接”窗格中选择服务器
  3. 在主窗格中打开配置编辑器
  4. 在 Sections 下拉列表中,选择要解锁的部分,例如system.webServer > defaultPath
  5. 单击右侧窗格中的解锁属性
  6. 重复您需要解锁的任何其他设置
  7. 重新启动 IIS(可选)- 在“连接”窗格中选择服务器,单击“操作”窗格中的重新启动
于 2014-09-06T08:16:41.090 回答
29

这对我有用,对于 IIS 8 Windows server 2012 R2

转到“打开功能”

然后转到所有默认设置,下一步,下一步,下一步等。

然后,如下图选择, 在此处输入图像描述

然后重置 IIS(可选),但这样做更安全。

在此处输入图像描述

这是一个额外的解决方案,因为它是一个普遍的问题,每个人都有不同的问题,因此有不同的解决方案。干杯!

于 2017-06-01T19:47:50.800 回答
27

在带有IIS 8的Windows Server 2012上,我通过启用ASP.NET 4.5功能解决了这个问题:

在此处输入图像描述

然后按照肯的回答

于 2014-02-10T17:56:25.470 回答
26

Application Settings最好的选择是从Custom Site Delegation
打开更改IIS并从根选择Feature Delegation然后选择Application Settings并从右侧边栏中选择Read/Write 步骤1 第2步

于 2016-08-16T12:46:47.957 回答
19

要解决此问题,请打开 IIS Express applicationhost.config。此文件存储在 C:\Users[您的用户名]\Documents\IISExpress\config\applicationhost.config

VS2015+ 的更新:配置文件位置是 $(solutionDir).vs\config\applicationhost.config

寻找以下几行

<section name="windowsAuthentication" overrideModeDefault="Deny" />
<section name="anonymousAuthentication" overrideModeDefault="Deny" />
<add name="WindowsAuthenticationModule" lockItem="true" />
<add name="AnonymousAuthenticationModule" lockItem="true" />

将这些行更改为

<section name="windowsAuthentication" overrideModeDefault="Allow" />
<section name="anonymousAuthentication" overrideModeDefault="Allow" />
<add name="WindowsAuthenticationModule" lockItem="false" />
<add name="AnonymousAuthenticationModule" lockItem="false" />

保存并刷新 Asp.net 页面。

于 2016-12-29T07:17:20.070 回答
16

在我们在 IIS 8 上的案例中,我们发现在尝试查看站点的“身份验证”时产生了错误,当:

  1. 服务器功能委派标记为“身份验证 - Windows”=“只读”
  2. 该站点有一个明确引用 Windows 身份验证的 web.config;例如,

将站点功能委派标记为“身份验证 - Windows”=“读/写”,错误就消失了。看来,使用标记为“只读”的功能,web.config 根本不允许引用它,甚至禁用它,因为这显然构成了写入。

网站 web.config IIS 管理器 - 服务器功能委派

于 2015-11-18T20:46:15.490 回答
14

似乎使用 IIS Express 和 VS 2015,在 $(solutionDir).vs\config\applicationhost.config 处有 applicationHost.config 文件的副本,因此您需要在那里进行更改。请参阅此链接:http ://digitaldrummerj.me/iis-express-windows-authentication/

确保根据以下内容更改这些行:

<section name="windowsAuthentication" overrideModeDefault="Allow" />
<section name="anonymousAuthentication" overrideModeDefault="Allow" />
<add name="WindowsAuthenticationModule" lockItem="false" />
<add name="AnonymousAuthenticationModule" lockItem="false" />
于 2016-01-12T18:31:09.127 回答
12

就我而言,是在.NET Framework 功能下未启用服务器上的“HTTP 激活”。因此,对于 Windows Server 2012,对我有用的解决方案是:

服务器管理器 -> 添加角色和功能 -> 功能 -> 确保在您要使用的版本的 .NET Framework 下选中“HTTP 激活”

于 2014-05-24T11:32:59.190 回答
9

启用功能的 Powershell 方式 (Windows Server 2012 +) - 根据需要修剪:

Install-WindowsFeature NET-Framework-Core
Install-WindowsFeature Web-Server -IncludeAllSubFeature
Install-WindowsFeature NET-Framework-Features -IncludeAllSubFeature
Install-WindowsFeature NET-Framework-45-ASPNET -IncludeAllSubFeature
Install-WindowsFeature Application-Server -IncludeAllSubFeature
Install-WindowsFeature MSMQ -IncludeAllSubFeature
Install-WindowsFeature WAS -IncludeAllSubFeature
于 2016-03-09T12:32:22.217 回答
8

我注意到一个类似的答案,但就我而言,我使用 IIS 配置编辑器来查找我想要“解锁”的部分。

在此处输入图像描述

在此处输入图像描述

然后我复制了路径并在我的自动化中使用它来解锁它,然后再更改我想要编辑的部分。

. "$($env:windir)\system32\inetsrv\appcmd" unlock config -section:system.webServer/security/authentication/windowsAuthentication
. "$($env:windir)\system32\inetsrv\appcmd" unlock config -section:system.webServer/security/authentication/anonymousAuthentication
于 2019-11-26T04:59:29.977 回答
7

该错误表示配置部分已锁定在父级别。所以它不会直接是 1 个配置文件来解决问题,我们需要通过配置文件的层次结构查看继承检查下面的链接以通过 IIS 中的文件层次结构和继承

https://msdn.microsoft.com/en-us/library/ms178685.aspx

因此,您需要按以下顺序检查应用程序配置设置

  1. C:windows\system32\inetsrv\config 中的 ApplicationHost.config。将 overrideModeDefault 属性更改为 Allow。
  2. 应用程序目录中的 ApplicationName.config 或 web.config
  3. Web.config 在根目录中。
  4. 特定网站中的 Web.config (我的问题是在这个地方找到的)。
  5. 根网站的 Web.config(服务器的配置)
  6. 机器的 machine.config(根的 web.config 和 machine.config 可以在 -systemroot\MicrosoftNET\Framework\versionNumber\CONFIG\Machine.config 找到)

按照 1 到 6 的顺序仔细检查所有这些配置,您应该会找到它。

于 2018-03-20T09:15:20.597 回答
6

当我收到这条好消息时,我需要更改子文件夹上的 SSL 设置。就我而言,以下行动帮助了我。

打开 C:\Windows\System32\inetsrv\config\applicationHost.config

并将值从 overrideModeDefault="Deny" 更改为 "Allow"

<sectionGroup name="system.webServer">
 ...
    <sectionGroup name="security">
        <section name="access" overrideModeDefault="Allow" />
    </sectionGroup>
于 2015-08-28T23:06:53.960 回答
4

就我而言,我收到此错误是因为我在错误的配置文件上进行操作。

我正在这样做:

Configuration config = serverManager.GetWebConfiguration(websiteName);
ConfigurationSection serverRuntimeSection = config.GetSection("system.webServer/serverRuntime");
serverRuntimeSection["alternateHostName"] = hostname;

而不是正确的代码:

Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection serverRuntimeSection = configApp.GetSection("system.webServer/serverRuntime", websiteName);
serverRuntimeSection["alternateHostName"] = hostname;

换句话说,我试图在网站的 web.config 上操作,而不是在全局文件 C:\Windows\System32\inetsrv\config\applicationHost.config 上操作,该文件有一个部分(或可以有一个部分)用于网站。我试图更改的设置仅存在于 applicationHost.config 文件中。

于 2013-06-06T22:45:16.407 回答
4

就我而言,这是另一回事。

当我在新版本的 Visual Studio 中加载解决方案时,VS 显然创建了一个新的特定于项目的 applicationhost.config 文件:

MySolutionDir\.vs\config\applicationhost.config

它开始使用新配置中的设置,而不是我已经自定义的全局 IIS Express 设置。(\Users\%USER%\Documents\IISExpress\config\applicationhost.config)

就我而言,这是需要设置的设置。当然,对你来说可能是别的东西:

<section name="ipSecurity" overrideModeDefault="Allow" />
于 2017-05-18T20:22:04.840 回答
3

在 Vista Home Premium 上安装 IIS 7 后收到同样的问题。为了更正错误,我更改了位于 Windows\system32\inetsrv 中的 applicationHost.config 文件中的以下值。

更改位于部分 --> 中的所有以下值

<div mce_keep="true"><section name="handlers" overrideModeDefault="Deny" /> change this value from "Deny" to "Allow"</div>
<div mce_keep="true"><section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" /> change this value from "Deny" to "Allow"</div>
于 2015-04-04T07:25:41.810 回答
3

你可以试试这个:

转到出现拒绝错误的应用程序路径,右键单击

属性->安全选项卡

在那,更改权限并检查复选框读取和写入。然后它希望它不会出现任何错误。

于 2016-02-16T10:10:54.957 回答
2

对于 Windows Server 2008 和 IIS 7,过程类似。请参考:http: //msdn.microsoft.com/en-us/library/vstudio/bb763178 (v=vs.100).aspx

在添加角色服务中,您将看到“应用程序开发功能”

检查(启用)这些功能。我检查了所有。

于 2014-05-12T08:35:42.860 回答
1

我遇到了类似的问题,但是我使用了以下 powershell 脚本,它帮助我在单击按钮时实现了上述步骤。

#Install IIS
Import-Module ServerManager

Add-WindowsFeature Web-Server, Web-Asp-Net45, Web-Mgmt-Console, Web-Scripting-Tools, NET-WCF-HTTP-Activation45, Web-Windows-Auth

可以根据需要添加或删除功能列表。

于 2021-03-26T11:18:40.670 回答
1

我有一个问题,我输入了 override = "Allow" 值(这里已经提到过)......但是在 x64 位系统上......我的 32 notepad++ 是幻影保存它们。切换到记事本(这是 x64 位操作系统上的 64 位应用程序)允许我保存设置。

看 :

http://dpotter.net/technical/2009/11/editing-applicationhostconfig-on-64-bit-windows/

相关文字:

我遇到的问题之一需要我查看并可能编辑 applicationHost.config。此文件位于 %SystemRoot%\System32\inetsrv\config。看起来很简单。我可以从命令行轻松找到它,但是当我在我最喜欢的编辑器(Notepad++)中加载它时,我得到了一个找不到文件的错误。结果发现 System32 文件夹针对 32 位应用程序被重定向到 SysWOW64。似乎无法使用 32 位应用程序查看 System32 文件夹。去搞清楚。幸运的是,64 位版本的 Windows 附带了 64 位版本的记事本。尽管我不喜欢它,但至少它有效。

于 2015-08-12T18:46:35.620 回答
1

在我的情况下,除了浏览之外,我在尝试更新 IIS 中的身份验证设置时也遇到了这个错误。通过从 web.config 本身中删除身份验证设置,我能够删除此错误。在某些情况下,删除有问题的配置部分可能比过多地更改服务器角色和功能更具侵入性和可取性:

已删除部分:

    <security>
        <authentication>
            <windowsAuthentication enabled="true" />
        </authentication>
    </security>
于 2015-08-26T19:40:25.170 回答
0

这对我有用 同样在 IIS 8 中,您可以通过将服务器更改为 IIS Express 来解决此问题。转到调试-> 属性在 Web 中从下拉列表中选择服务器作为 IIS Express,然后重建解决方案

于 2014-12-02T05:49:26.947 回答
0

我遇到过同样的问题。

  • 通过启用应用程序服务器功能解决了它。之后重启了iis。
于 2014-05-15T22:47:56.213 回答
0

在应用程序级别 (Web.Config) 进行更改:

请从 web.config 中删除信任级别:

实际上,当我尝试在无法控制其服务器的托管服务器上托管我的网站时,我遇到了这个错误。从我的应用程序 web.config 中删除上述行解决了我的问题。

于 2015-06-18T11:24:56.827 回答
0

我解决了这个问题

转到cmd并执行aspnet_regiis -i

希望对某人有所帮助。

于 2016-09-13T05:58:37.900 回答
0

在重新安装 iis 和可能的所有站点之前,请转到:C:\inetpub\history

应该有多个文件夹(例如:CFGHISTORY_0000000029)。每次修改根配置文件时,都会在其中创建条目。(默认保存最近 10 次修改的备份)

查找具有正确日期和时间的备份文件夹,单击它并查看是否有一个名为的文件;应用程序主机配置

将此与您当前的 applicationhost.config 文件进行比较,或用它替换您当前的版本(先备份!!!)。

我最近让我的 localhost iis 文件被 Windows 2004 更新包修改,它锁定了根目录中的一些功能(例如处理程序),这阻止了 localhost 站点工作 - 因此我进行了搜索。

如果您在 Visual Code 中打开文件,您可以看到每个区域都使用 overrideModeDefault="Deny" 锁定

这可能会让您更近一步,并且如果该文件被损坏,也是一种恢复的方法。

于 2020-08-09T04:14:54.397 回答
0

以下对我有用:

转到项目属性。网页选项卡。设置为本地 IIS 并设置特定页面。

我有 Windows 7 和 Visual Studio 2013。

于 2016-01-28T20:51:53.550 回答
-1

在注册表中添加以下键解决了我的问题:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\ASP.NET_64\Performance

当我尝试这些步骤时,我不断收到错误:

  1. 搜索“打开或关闭 Windows 功能”
  2. 勾选“互联网信息服务”
  3. 勾选“万维网服务”
  4. 检查“应用程序开发功能”
  5. 启用此下的所有项目

然后我查看了事件查看器并看到了这个错误:Unable to install counter strings because the SYSTEM\CurrentControlSet\Services\ASP.NET_64\Performance key could not be opened or accessed. The first DWORD in the Data section contains the Win32 error code.

为了解决这个问题,我在注册表中手动创建了以下条目:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\ASP.NET_64\Performance

并遵循以下步骤:

  1. 搜索“打开或关闭 Windows 功能”
  2. 勾选“互联网信息服务”
  3. 勾选“万维网服务”
  4. 检查“应用程序开发功能”
  5. 启用此下的所有项目
于 2019-02-12T19:34:47.287 回答