IIS8 Win8和runAllManagedModulesForAllRequests="true"的含义是什么?

93

我正在尝试在IIS8中运行一个具有以下配置的应用程序:

<modules runAllManagedModulesForAllRequests="true" />

IIS8 给我一个错误,说:

此配置部分不能在此路径使用。 当该部分在父级别上被锁定时,就会发生这种情况。 锁定可以是默认的(overrideModeDefault =“Deny”),也可以是通过具有 overrideMode =“Deny”或传统 allowOverride =“false”的位置标记明确设置的。

我猜测根据错误信息和快速的SO搜索,可能存在一些更高级别的安全设置阻止了该行代码的执行。您有什么想法吗?

4个回答

172

2
这就是事实...我只是没有在Windows 8中打开那些功能。非常感谢您的答案! - David Sulpy
这真的是一个问题,当尝试部署时,IIS8会将其视为错误。 - Johnny_D
1
太棒了!在Windows 8上运行成功。 - Sanoop
1
这也是在Windows 10上的解决方案。非常感谢! - Yang You
对于我来说,是在Windows Server 2016上的.NET 4.8。该功能名为“ASP.NET 4.6”(而不是链接中显示的“ASP.NET 4.5”),但它完成了工作! - Dan Roberts

22

对于运行Windows Server 2012的用户,可以在以下位置找到应用程序开发功能:

[]服务器角色 []Web服务器IIS []Web服务器 []应用程序开发 []ASP.NET x.x

当您选择.NET版本时,它会询问是否要添加扩展和其他功能。我选择了是,但您可能可以不安装它们。


3
您可以通过IIS UI解锁该部分,具体步骤可参考https://serverfault.com/a/516921/137255
  1. 打开IIS管理器
  2. 在左侧的树形结构中单击服务器名称
  3. 右侧面板中的管理部分,双击“配置编辑器”
  4. 在顶部,根据有问题项目的XPath选择相关部分;例如,对于此示例,选择“system.webServer/modules”。
  5. 右侧面板,单击“解锁部分”

2

这里很难给出具体的答案,但基本原理是需要查看正在运行的机器上的machine.config文件。找到system.webServer节点并查找错误中引用的3个标签/属性。很可能会发现某些标记被标记为不可重写(allowOverride="false"),但我还没有使用过Windows 8 / Server 2012,所以不知道machine.config的外观。


有趣的是,在 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config 中没有 system.webServer 部分,尽管那听起来像是答案。 - David Sulpy
谢谢。我将(allowOverride="false")添加到了C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config文件中。结果:<section name="system.webServer" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowOverride="false"/> - Hemant Ramphul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接