配置错误:此配置部分不能在此路径中使用

时间:2012-03-20 21:07:52

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

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

  

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

可在此处找到更多详细信息,Scenario 7符合我的十六进制错误代码。

上面链接网站上提供的解决方案是在 applicationHost.config 文件中的错误中提到的部分中为overrideModeDefault设置允许。就我而言,在 system.webServer 中的安全下。但是,如果我查看本地计算机上已经正确部署网站的 applicationHost.config ,该部分将设置为拒绝

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

32 个答案:

答案 0 :(得分:3051)

我遇到了同样的问题。不记得我在网上找到它的地方,但这就是我所做的:

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

答案 1 :(得分:338)

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

关注此Learn IIS article

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

Feature delegation icon in IIS Manager

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

Example use of Feature Delegation

答案 2 :(得分:171)

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

应安装Web Server (IIS)Application Server,并且还应在Web Server (IIS) Support下设置可选的Application Server

Windows Server 2012 and IIS 8 Requirements for MVC

答案 3 :(得分:130)

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

答案 4 :(得分:64)

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

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

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

答案 5 :(得分:34)

根据my answer to this similar issue;

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

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

答案 6 :(得分:32)

对于Win 10 (也可能适用于其他Windows版本。)

1。打开“打开或关闭Windows功能”:WinKey + R =&gt; “optionalfeatures”=&gt;行

enter image description here

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

    enter image description here

答案 7 :(得分:27)

我需要从命令提示符运行这两个命令:

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

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

答案 8 :(得分:25)

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

enter image description here

然后关注ken's answer

答案 9 :(得分:16)

对于IIS 8 Windows Server 2012 R2

,这对我来说是个窍门

转到&#34;打开功能&#34;

然后转到所有默认设置,Next,Next,Next等..

然后,选择如下所示, enter image description here

然后重置IIS(可选),但做得更安全一面。

enter image description here

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

答案 10 :(得分:14)

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

答案 11 :(得分:12)

似乎在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 :(得分:11)

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

服务器管理器 - &gt;添加角色和功能 - &gt;特点 - &gt;确保在.NET Framework的版本中检查您要使用的版本&#34; HTTP激活&#34;

答案 13 :(得分:11)

在IIS 8的案例中,我们发现在尝试查看身份验证时产生了错误。对于网站,时间:

  1. 服务器功能委派标记为&#34;身份验证 - Windows&#34; =&#34;只读&#34;
  2. 该网站有一个明确引用了Windows身份验证的web.config;例如,
  3. 标记网站功能委派&#34;身份验证 - Windows&#34; =&#34;读/写&#34;,错误消失了。看来,使用标记为&#34; Read Only&#34;的功能,即使禁用它也不允许web.config引用它,因为这显然构成了写入。

    site web.config IIS Manager - Server Feature Delegation

答案 14 :(得分:8)

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

答案 15 :(得分: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>

答案 16 :(得分:4)

在我的情况下,它是另一回事。

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

<强> MySolutionDir \ .VS \配置\对ApplicationHost.config

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

在我的情况下,这是需要设置的设置。当然,这对你来说可能是另一回事:

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

答案 17 :(得分: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文件中。

答案 18 :(得分:3)

你可以试试这个:

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

属性 - &gt;安全标签

在其中,更改权限并选中读取和写入复选框。然后它会毫无错误地工作。

答案 19 :(得分:3)

错误表示配置部分已锁定在父级别。 所以它不会直接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找到)
  7. 仔细检查所有这些配置,顺序为1到6,你应该找到它。

答案 20 :(得分:2)

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

更改位于&gt;部分中的所有以下值

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

答案 21 :(得分:2)

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

在添加角色服务中,您将看到&#34;应用程序开发功能&#34;

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

答案 22 :(得分:2)

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

enter image description here

enter image description here

然后,我复制了路径,并在更改要编辑的部分之前将其用于自动化中以对其进行解锁。

. "$($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

答案 23 :(得分:1)

我遇到了覆盖=&#34;允许&#34;值(这里已经提到过)......但是在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文件夹。去搞清楚。 幸运的是,64位版本的Windows附带64位版本的记事本。尽管我不喜欢它,但至少它是有效的。

答案 24 :(得分:0)

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

请从web.config中删除Trust Level:

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

答案 25 :(得分:0)

以下对我有用:

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

我有Windows 7和Visual Studio 2013。

答案 26 :(得分:0)

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

答案 27 :(得分:0)

我解决了这个问题

转到cmd并执行aspnet_regiis -i

希望对某人有所帮助。

答案 28 :(得分:0)

我有同样的问题。

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

答案 29 :(得分:0)

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

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

尝试这些步骤时,我不断出错:

  1. 搜索“打开或关闭Windows功能”
  2. 检查“ Internet信息服务”
  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. 检查“ Internet信息服务”
  3. 选中“万维网服务”
  4. 检查“应用程序开发功能”
  5. 启用此下的所有项目

答案 30 :(得分:0)

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

应该有多个文件夹(例如:CFGHISTORY_0000000029)。 每次修改根配置文件并在其中进行输入。 (默认情况下,会保存最近10次修改的备份)

查找具有正确日期和时间的备份文件夹, 单击它,看看是否有一个名为的文件。 applicationhost.config

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

最近,我通过Windows 2004更新包修改了localhost iis文件,该文件将根目录上的一些功能(例如处理程序)锁定了,从而阻止了localhost站点正常工作,因此无法进行搜索。

如果在Visual Code中打开文件,则可以看到每个区域都被一个 overrideModeDefault =“ Deny”

这可能使您更近一步,并且如果此文件损坏,也可以通过此方法进行恢复。

答案 31 :(得分:0)

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

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