iis - 配置iis - 这里配置节无法使用锁定?

  显示原文与译文双语对照的内容

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

配置错误:这里配置节不能在这里路径下使用。 当节被锁定在父级别时发生这种情况。 锁定是默认的( overridemodedefault="拒绝"),或者通过带有 overridemode="拒绝"或者旧版 allowoverride="错误"的位置标记显式设置。

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

他们在链接站点上给出的解决方案是在我的错误中设置"允许"为 overrideModeDefault,在 applicationHost.config 文件中。 在 system.webServer 中的安全性下。 但是,如果我查看本地计算机上的applicationHost.config,该站点已经正确部署,那部分将设置为拒绝

所以如果这个解决方案是正确的,那么我的本地实例如何使用相同的Web.Config 运行得很好? 根据我的applicationhost 。config,该节应该被锁定,但它不是。 我不需要更改 applicationHost.config 文件,因为在那个服务器上有很多其他站点。 这里错误还有其他解决方案?

谢谢!

时间:

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

注意这里学习IIS文章 。xml:

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

Feature delegation icon in IIS Manager

然后你可以控制每个machine-level读/写权限,这将为你提供 overridemode="拒绝"的错误。

Example use of Feature Delegation

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

应该安装 Web Server (IIS)Application Server,并且还应该有可选 Web Server (IIS) SupportApplication Server 下。

Windows Server 2012 and IIS 8 Requirements for MVC

浏览到"windowssystem32inetsrvconfig:"( 你将需要管理员权限) 打开 applicationHost.config

找到出现在错误消息页面"配置源"部分中的部分。 对于我来说,这通常是"模块"或者"处理程序""

将overrideModeDefault属性更改为"允许""

现在整个线条看起来像:


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

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

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

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


%windir%system32inetsrvappcmd.exe unlock config -section:system.webServer/handlers

在 IIS 8上遇到这个错误的人的另一个信息,我的例子是微软服务器 2012平台。 我花了几个小时来处理在执行appcmd之后冒泡的其他错误。 最后,我通过删除Web服务器角色并再次安装来修复它。

在 Windows Server 2012与 IIS 8我已经解决了这个通过启用 ASP.NET 4.5特点:

enter image description here

然后跟随 的回答。

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


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

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

由于我在错误的配置文件上操作,所以我遇到了这个错误。

我是这么做的:


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:WindowsSystem32inetsrvconfigapplicationHost. 配置网站而不是全球文件,有部分( 或者可以有一个节) 网站。 我试图更改的设置只存在于 applicationHost.config 文件中。

...