配置错误:无法在此路径上使用此配置部分


1778

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

配置错误:无法在此路径上使用此配置部分。当节锁定在父级时,会发生这种情况。锁定默认情况下是(overrideModeDefault =“ Deny”),或者是由一个带有overlayMode =“ Deny”或旧版allowOverride =“ false”的位置标记显式设置的。

方案7中匹配我的十六进制错误代码,可以在这里找到更多详细信息。

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

如果此解决方案正确,那么我的本地实例如何在相同的web.config下正常运行?根据我的applicationHost.config,该部分应被锁定,但不是。我希望不要更改applicationHost.config文件,因为该服务器上还有许多其他站点正在运行。还有其他解决方案吗?


2
如果你来到这里,因为你已经得到了尝试使用“认证网”程序(当这个错误certifytheweb.com),那么这个博客文章可能是相关的:renniestechblog.com/information/...
RenniePet

Answers:


3330

我有同样的问题。不记得我在网上找到的位置了,但这是我做的:

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

顺便说一句,我正在使用Windows 7。


84
构建了一个新的Windows Server 2012,果然忘记了在Web Server下添加应用程序开发。我检查了所有内容,但没有CGI,ASP和“服务器端包含”,因为这里没有经典的ASP。
克里斯,

49
我检查了“应用程序开发功能”,但后来意识到实际上没有选择该文件夹中的任何功能来启用。我手动选择了每个功能(CGI除外)以消除错误。
Ciaran Gallagher

30
也在Windows 8上针对IIS8进行了确认。
巴巴克纳法斯

74
确认用于Windows 8.1的IIS8.5。
Mike P.

74
确认适用于Windows 10(IIS 10.0 Build 10240)
Sixones 2015年

381

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

这篇学习IIS文章的内容

从IIS的根目录使用功能委托

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

然后,您可以控制每个计算机级别的读/写权限,否则将为您提供overrideMode =“ Deny”错误。

功能委托的使用示例


16
要继续此操作,对我有用的是(请注意此解决方案在我的DEV框上,而不是在生产系统上):->按委派排序->查找所有只读类型->将它们设置为读/写
Aaron里德2014年

1
修复了我在IIS7管理器中收到的错误消息。更令人惊讶的是,它还修复了尝试访问网站时HTTP 500客户端收到的错误。
布莱恩·吉迪恩

6
这里发布了两个看似不同的解决方案,这两个都是必需的。首先,安装“应用程序服务器”和“ Web服务器”支持功能。第二种是,检查委派设置,并将有问题的设置从只读更改为“读/写”。重要说明:除非安装了正确的支持功能,否则在授权功能中可能无法使用有问题的配置。就我而言,问题是“身份验证-匿名”,并且直到我安装了应用程序服务器功能后,该委派功能才显示出来。
maplemale

1
这对我有用。在IIS 8.5中,Windows Server 2012 R2
ellickakudy rajeesh

1
对我来说,问题出在Windows 10的IIS 10中的身份验证部分。此链接对我有所帮助。Knowledgebase.progress.com/articles/Article/…–
Ajith,

184

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

Web Server (IIS)Application Server应安装,你也应该有可选的Web Server (IIS) SupportApplication Server

Windows Server 2012和IIS 8对MVC的要求


30
只是为了澄清一下,“ Web服务器(IIS)支持”功能复选框不在上图的“应用程序服务器”节点下。执行几次“下一步”并通过左侧导航栏上的“服务器角色和功能”并进入“角色服务”后,它将显示出来(未出现在上图中,但几次执行“下一步”后将为您显示)。这让我发疯:P
thedrs 2014年

2
对我来说,这些选项仅在我首先添加Application Server规则然后重新启动“添加角色和功能向导”之后出现
wonster 2015年

145

浏览到“ 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" />

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

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


2
64位链接为404,很遗憾,您没有在答案中直接包含有用的信息。
Erik Philips

1
在Windows 8.1开发人员环境+1上的ipSecurity上,这就是我需要的。
Moby的特技双人

对于64位Windows,您需要通过notepad.exe并打开%SystemRoot%\ System32 \ inetsrv \ config才能获取文件的正确副本
Eddie Fletcher

在Visual Studio 2017的“身份验证”部分中进行本地调试时,这发生在我身上。救生员!
D Ie

69

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

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

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


这对我也适用于system.webServer / security / ipSecurity
Bart Calixto

3
答对了。必须以管理员身份运行。
JackMorrissey 2014年

3
我也必须对-section:system.webServer / modules执行此操作。
迈克(Mike)

1
为我工作-我一直在寻找一套/section:access /sslFlags:SslNegotiateCert,发现我不得不使用上述与-section:access 该报道Unlocked section "system.webServer/security/access"...
肖恩·王尔德

1
在Windows Server 2012 R2上为我工作
Robben_Ford_Fan_boy

50

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

在此处输入图片说明

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

在此处输入图片说明

在Win 10上进行了测试-但可能也可以在其他Windows版本上使用。


2
完善。我只需要选中ASP.NET 4.7框,它会自动选择它需要的所有其他要求。即使没有重新启动网站,也像魅力一样运作。
比尔·塔贝尔

对于我们的IIS新手来说,验证实际上已安装正确版本的asp.net应该是第一步。
mrfelis

1
出色的伴侣:D
Fabio Silva Lima

38

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

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

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

这不能为问题提供答案。要批评或要求作者澄清,请在其帖子下方留下评论-您可以随时对自己的帖子发表评论,一旦您拥有足够的声誉,就可以在任何帖子中发表评论
Rook

19
@Rook这是一个很好的答案,因为它不会盲目地促进在服务器上启用应用程序开发功能。它针对出现此错误的特定情况提出了一种受控解决方案。它本来可以说得更好。出色的工作增强了当时的新人的信心-在您和NAZIK对加入社区的第一次尝试都表示怀疑之后,他再也没有回来。
qujck

1
这解决了我的应用程序具有Windows身份验证的应用程序级配置的问题。
nebffa '16

很好,这可以解决应用程序开发功能所没有的窍门
Stephen Holt

1
为我工作,但是为什么呢?
Kevman

37

根据我对类似问题的回答 ;

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

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

1
此解决方案对我有用,但真正的原因有所不同-我必须安装ASP.NET 4.5(Add-WindowsFeature Web-Asp-Net45)。
Der_Meister '16


26

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


我的IIS管理器没有很多这些功能。我想我必须通过Windows功能添加它们。我选择了所有它们(黑色方框),但是当我单击它时,都没有选择任何选项!我从未在所有Windows操作系统上看到过这种情况。微软,真可惜!浪费了很多时间。确保已检查所有所需的Windows功能。.请勿使用黑色
正方形

3
或了解在服务器上安装软件时“黑色方块”的含义。
拉里·布德(LarryBud)'18年

1
我可以添加步骤2.1->单击右侧的“自定义站点委派”,然后从顶部下拉列表中选择要允许覆盖的站点。我建议不要在所有站点上覆盖,而只在您需要的站点上覆盖。然后,继续执行步骤
3。– foxont​​herock,

26

对于IIS 8 Windows Server 2012 R2而言,这对我有用

转到“打开功能”

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

然后,选择如下所示, 在此处输入图片说明

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

在此处输入图片说明

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


1
这也适用于Windows Server 2016
M. Schena,

1
这个为我工作
aronccs 19/12/10

在Windows Server 2016上完美工作!
D Todorov

17

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


15

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

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

将站点功能委派标记为“身份验证-Windows” =“读/写”,该错误消失了。似乎,使用标记为“只读”的功能,甚至不允许web.config完全引用它,甚至禁用它,因为这显然构成了写操作。

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


13

似乎在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" />

12

以我为例,这是服务器上.NET Framework功能下未启用“ HTTP激活”的原因。因此,对于Windows Server 2012,适用于我的解决方案是:

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


在Windows 7、8、10、2008服务器,2012服务器中无法使用@Ray吗?
Kiquenet '16

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

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>

6

该错误表明配置节被锁定在父级。因此,不会直接通过1个配置文件来解决此问题,我们需要遍历配置文件的层次结构以查看继承关系。检查下面的链接以查看IIS中的文件层次结构和继承关系

https://msdn.microsoft.com/zh-CN/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(可以在-systemroot \ MicrosoftNET \ Framework \ versionNumber \ CONFIG \ Machine.config中找到根的web.config和machine.config)

仔细按1到6的顺序浏览所有这些配置,您应该找到它。


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


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

4

我注意到一个相似的答案,但就我而言,我使用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

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>

3

您可以尝试一下:

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

属性->安全选项卡

在那种情况下,更改权限并选中读取和写入复选框。然后它将可以正常工作而不会出现任何错误。



1

我遇到了一个问题,我在其中输入了override =“ Allow”值(这里已经提到过)……但是在x64位系统上。……我的32个记事本++是幻像式地保存它们。切换到记事本(这是x64位O / S上的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文件夹。去搞清楚。幸运的是,Windows的64位版本附带了64位版本的记事本。尽管我不喜欢它,但至少它能起作用。


1

就我而言,除了浏览外,尝试更新IIS中的身份验证设置时遇到了此错误。我可以通过从web.config本身删除身份验证设置来消除此错误。与在服务器角色和功能上进行过多更改相比,删除有问题的配置节可能更具侵入性,并且在某些情况下更可取:

部分已删除:

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

0

我遇到过同样的问题。

  • 通过启用Application Server功能解决了该问题。之后重新启动iis。

如何启用Application Server功能?在Windows Server 2008或2012中?Windows 7,8,10?使用Powershell?
Kiquenet '16

0

这对我也有效在IIS 8中,您也可以通过将服务器更改为IIS Express来解决此问题。转到debug-> Properties在Web中,从下拉列表中选择服务器作为IIS Express,然后重新生成解决方案


0

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

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

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


0

以下为我工作:

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

我有Windows 7和Visual Studio 2013。

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.