【问题标题】:Config Error: This configuration section cannot be used at this path配置错误:此配置部分不能用于此路径
【发布时间】:2026-02-18 04:00:02
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: iis iis-7 iis-8.5 iis-10


【解决方案1】:

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

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

顺便说一句,我使用的是 Windows 7。多年来,许多 cmets 已经证明它可以一直运行到 Windows 10 和 Server 2019。

【讨论】:

  • 太棒了!我的缺少.Net 4.8。启用它并开始工作。谢谢百万人。
  • 在 Windows 10 上,这对我有用。我的项目目标是 .Net 4.8 但 IIS 只有 .Net 4.7,但这不是问题
  • 太棒了!,这对我有用。由此,我们允许错误提及的受父级别限制的所有服务。
  • 对于 Windows Server 2019,您必须从服务器管理器的“添加角色和功能”中激活这些功能。
  • 在 Windows 10 中为我工作。谢谢!
【解决方案2】:

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

关心这个Learn IIS article:

使用 IIS 根目录中的功能委派

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

【讨论】:

  • 要继续这个,对我有用的是(注意这个解决方案是在我的 DEV 盒子上,而不是生产系统上): -> 按委派排序 -> 查找所有只读类型 ->将它们设置为读/写
  • 修复了我在 IIS7 管理器中收到的错误消息。更令人惊讶的是,它还修复了客户端在尝试访问该网站时收到的 HTTP 500。
  • 这里发布了两种看似不同的解决方案,两者都是必需的。首先,安装“应用程序服务器”和“Web 服务器”支持功能。第二个是,检查委派设置并将有问题的设置从只读更改为读/写。重要注意事项:除非安装了正确的支持功能,否则在委派功能中可能无法使用有问题的配置。就我而言,“身份验证 - 匿名”是问题所在,直到我安装了应用程序服务器功能后,此委托功能才出现。
  • 这对我有用。在 IIS 8.5 中,Windows 服务器 2012 R2
  • 对我来说,问题出在身份验证部分,在 Windows 10 的 IIS 10 中。这个链接对我有帮助。 knowledgebase.progress.com/articles/Article/…
【解决方案3】:

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

Web Server (IIS)Application Server 应该已安装,您还应该在Application Server 下拥有可选的Web Server (IIS) Support

【讨论】:

  • 澄清一下,“Web 服务器 (IIS) 支持”功能复选框不在上图中的“应用程序服务器”节点下。它会在您执行几次“下一步”并通过左侧导航栏上的服务器角色和功能并进入“角色服务”后显示(没有出现在上图中,但会在多次“下一步”后为您显示)。这让我发疯了:P
  • 对我来说,这些选项仅在我第一次添加应用程序服务器规则然后重新启动添加角色和功能向导后才会出现
【解决方案4】:

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

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

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

overrideModeDefault 属性更改为Allow

所以整行现在看起来像:

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

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

警告: Editing applicationHost.config on 64-bit Windows

【讨论】:

  • 64 位的链接是 404,可惜你没有直接在答案中包含有用的信息。
  • 这就是我在 Windows 8.1 开发环境中的 ipSecurity 上为我准备的,+1。
  • 对于 64 位 Windows,您需要通过 notepad.exe 并打开 %SystemRoot%\System32\inetsrv\config 以获得文件的正确副本
  • 我在 Visual Studio 2017 中本地调试时,在“身份验证”部分中发生了这种情况。救生员!
  • 我在阅读第一个答案后忽略了这个页面,这对我来说不是一个修复。经过几天的谷歌搜索后,我刚刚回到这里,我的修复正好低于接受的答案。非常感谢朋友!!!
【解决方案5】:

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

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

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

【讨论】:

  • 这对我也适用于 system.webServer/security/ipSecurity
  • 宾果游戏。必须以管理员身份运行。
  • 我也必须为 -section:system.webServer/modules 执行此操作。
  • 为我工作 - 我正在寻找设置 /section:access /sslFlags:SslNegotiateCert 并发现我必须将上述内容与 -section:access 一起使用,报告为 Unlocked section "system.webServer/security/access"...
  • 在 Windows Server 2012 R2 上为我工作
【解决方案6】:

1.通过以下方式打开“打开或关闭Windows功能”:WinKey+ R => "optionalfeatures" => OK

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

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

【讨论】:

  • 完美。我只需要检查 ASP.NET 4.7 框,它会自动选择它需要的所有其他要求。甚至无需重新启动网站就可以像魅力一样工作。
  • 对于我们IIS新手来说,验证实际安装了正确版本的asp.net应该是第一步。
【解决方案7】:

我在提升的命令提示符下运行了这两个命令:

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

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

【讨论】:

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
  • @Rook 这是一个非常好的答案,因为它不会盲目地促进在服务器上启用应用程序开发功能;它说明了针对出现此错误的特定情况的受控解决方案。本来可以更好的措辞。很好地增强了当时的新人的信心 - 在你和 NAZIK 在他第一次加入社区的尝试中自以为是之后,他再也没有回来。
  • 这解决了我的应用程序的问题,该应用程序具有 Windows 身份验证的应用程序级配置。
  • 很好,这在应用程序开发功能没有的地方起到了作用
  • 对我有用,但为什么呢?
【解决方案8】:

根据my answer to this similar issue;

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

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

【讨论】:

  • 这个解决方案对我有用,但真正的原因不同 - 我必须安装 ASP.NET 4.5 (Add-WindowsFeature Web-Asp-Net45)。
  • 这对我有用.. 我解锁了错误显示的部分。对我来说 system.webServer > anonymousAuthentication(在网络配置中)
  • 在 Windows Server 2019 为我工作过 system.webServer > security > authentication > basicAuthentication
【解决方案9】:

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

转到“开启功能”

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

然后,如下图选择,

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

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

【讨论】:

  • 在 Windows Server 2016 上完美工作!
【解决方案10】:

Windows Server 2012 上使用 IIS 8 我已经通过启用 ASP.NET 4.5 功能解决了这个问题:

然后关注ken's answer

【讨论】:

  • 在 PowerShell 中:Add-WindowsFeature Web-Asp-Net45
【解决方案11】:

最好的选择是从 Custom Site Delegation 更改 Application Settings
打开IIS,从根目录中选择Feature Delegation,然后选择Application Settings,然后从右侧边栏中选择Read/Write

【讨论】:

  • 我的 IIS 管理器没有很多这些功能。我想我必须通过 Windows 功能添加它们。我选择了所有选项(黑色方框),但是当我点击它时,没有一个选项被选中!我从未见过使用所有 Windows 操作系统的这种情况。微软为你感到羞耻!浪费了很多时间。确保检查所有 WINDOWS 功能是否符合要求..不要使用黑色方块选择
  • 或者了解在服务器上安装软件时“黑色方块”的含义。
  • 我可以添加步骤 2.1 -> 单击右侧的“自定义站点委托”,然后从顶部下拉列表中选择您要允许覆盖的站点。我建议不要在所有站点上允许覆盖,而只允许在您需要的站点上覆盖。然后,继续第 3 步。
【解决方案12】:

要解决此问题,请打开 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 页面。

【讨论】:

    【解决方案13】:

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

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

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

    【讨论】:

      【解决方案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" />
      

      【讨论】:

        【解决方案15】:

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

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

        【讨论】:

        • 在 Windows 7、8、10、2008 服务器、2012 服务器中无法使用@Ray?
        【解决方案16】:

        启用功能的 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
        

        【讨论】:

          【解决方案17】:

          我注意到一个类似的答案,但在我的情况下,我使用 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
          

          【讨论】:

            【解决方案18】:

            错误表示配置部分已锁定在父级别。 所以它不会是直接解决问题的 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(Root的web.config和machine.config可以在-systemroot\MicrosoftNET\Framework\versionNumber\CONFIG\Machine.config找到)

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

            【讨论】:

              【解决方案19】:

              当我收到这条好消息时,我需要更改子文件夹的 SSL 设置。在我的情况下,以下操作帮助了我。

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

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

              <sectionGroup name="system.webServer">
               ...
                  <sectionGroup name="security">
                      <section name="access" overrideModeDefault="Allow" />
                  </sectionGroup>
              

              【讨论】:

                【解决方案20】:

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

                我正在这样做:

                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 文件中。

                【讨论】:

                  【解决方案21】:

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

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

                  MySolutionDir\.vs\config\applicationhost.config

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

                  在我的情况下,这是需要设置的设置。当然,对你来说也可以是别的东西:

                  <section name="ipSecurity" overrideModeDefault="Allow" />
                  

                  【讨论】:

                    【解决方案22】:

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

                    【讨论】:

                      【解决方案23】:

                      你可以试试这个吗:

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

                      属性->安全标签

                      在其中,更改权限并选中读取和写入复选框。然后希望它可以正常工作。

                      【讨论】:

                        【解决方案24】:

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

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

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

                        【讨论】:

                          【解决方案25】:

                          我遇到了一个问题,我输入了 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 位版本的记事本。尽管我不喜欢它,但至少它有效。

                          【讨论】:

                            【解决方案26】:

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

                            已删除部分:

                                <security>
                                    <authentication>
                                        <windowsAuthentication enabled="true" />
                                    </authentication>
                                </security>
                            

                            【讨论】:

                              【解决方案27】:

                              我遇到了类似的问题,但我使用了以下 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
                              

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

                              【讨论】:

                                【解决方案28】:

                                我有同样的问题。

                                • 通过启用应用服务器功能解决了这个问题。重启iis 之后。

                                【讨论】:

                                • 如何启用应用程序服务器功能?在 Windows Server 2008 或 2012 中? Windows 7、8、10?使用 Powershell?
                                【解决方案29】:

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

                                【讨论】:

                                  【解决方案30】:

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

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

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

                                  【讨论】: