【发布时间】:2021-07-05 18:44:31
【问题描述】:
不幸的是,在 IIS 中,如果您在 wwwroot\web.config 和 wwwroot\myapp\web.config 中定义相同的设置,某些类型的设置会相互冲突,从而导致 500.19 错误。
例如允许的动词:
<security>
<requestFiltering>
<verbs allowUnlisted="false">
<add verb="HEAD" allowed="true" />
<add verb="POST" allowed="true" />
<add verb="GET" allowed="true" />
</verbs>
</requestFiltering>
</security>
不幸的是,PowerShell Set-WebConfiguration 在进行更改之前不会对此进行验证,一旦损坏,您就无法删除错误的配置。
我需要一种方法来在更改之前/之后验证配置,以便我可以回滚或采取行动。
我找到了这个解决方案:https://serverfault.com/questions/708079/is-there-a-cmd-tool-to-check-a-web-config-file-for-validity 但是它只验证语法错误或只验证非常重要的配置问题。
它不会检测其他过滤器路径的冲突: 例如无法添加类型为“add”且唯一键属性“verb”设置为“HEAD”的重复集合条目
【问题讨论】:
-
如果您在添加项目之前添加
<remove verb="HEAD" />之类的行,那么您可以在任何地方找到您的web.config作品。期待冲突并妥善处理它们是一种很好的方式。 -
是的,但是它确实需要让所有开发人员参与进来并确保他们正确地完成工作。我们有多个不同的版本,具有不同程度的合规性,因此检测问题非常重要。一般来说,了解是否存在意外冲突是个好主意。
-
可能他们认为您应该接受自己的答案来完成讨论。
标签: powershell iis web-config