是否有一个 cmd 工具可以检查 web.config 文件的有效性?

是否有一个 cmd 工具可以检查 web.config 文件的有效性?

当您有一个格式错误的 web.config 并尝试在 GUI 中编辑它的一部分时,它会弹出一个框,说明情况并告诉您它在哪一行中断了。

有没有办法通过 cmd/powershell 访问此功能?

答案1

您可以使用如下代码:

$site = "Default Web Site"

try
{
    Get-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location "$site" -filter "system.webServer" -name . | Out-Null
    Write-Output "All is Well"
}
catch [System.Exception]
{
    Write-Output $_ 
}

输出可能包括:

Get-WebConfigurationProperty : Filename: \\?\C:\inetpub\wwwroot\web.config
Line number: 7
Error: Configuration file is not well-formed XML

或者

Get-WebConfigurationProperty : Filename: \\?\C:\inetpub\wwwroot\web.config
Line number: 5
Error: The configuration section 'foo' cannot be read because it is missing a section declaration 

答案2

不幸的是@Peter Hahndorf 的答案只会检查语法问题,它不会捕捉到多级配置之间存在冲突的情况。

我已经创建了一个解决此问题的函数,完整答案在这里:https://stackoverflow.com/questions/68260818/how-do-i-validate-an-iis-web-config-in-powershell/68260819#68260819

但它的要点是你必须找到所有的“过滤器”并单独测试它们。

相关内容