我们有时在 IIS 网站上设置属性时会遇到异常。
在此特定实例中,导致错误的代码行是
Set-WebConfigurationProperty -filter "/system.webServer/security/authentication/$($Type)Authentication" -name Enabled -value $valueText -PSPath "IIS:\" -Location $ApplicationName
$Type
是 "Windows"
$valueText
是 "False"
生成的异常消息(部分为德语,自由文本部分下方有英语详细信息):
Set-WebConfigurationProperty : Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
In C:\\[REDACTED]\\Modules\\IIS-Application-Configuration.psm1:83 Zeichen:5
+ Set-WebConfigurationProperty -filter "/system.webServer/security/ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) \[Set-WebConfigurationProperty\], NullReferenceException
+ FullyQualifiedErrorId : System.NullReferenceException,Microsoft.IIs.PowerShell.Provider.SetConfigurationProperty
Command\
不幸的是,该错误是不可重现的,因此我们无法测试任何类型的解决方案,甚至无法测试我们必须避免这种情况的任何想法。 有没有人遇到过这种情况,或者可以解释这种行为。甚至可能提供一种引发错误的方法,以便我们可以适当地处理这种情况并测试修复?
我们尝试过的: 我们尝试再次运行它,错误就消失了。 在其他情况下,我们尝试在重新执行之前停用 iis 站点。 但由于它并不是真正可重现的,我们不确定它是否真正解决了问题(无论如何,在执行这一行之前,应该在脚本中禁用 iis 站点)。
通常的网络搜索方法似乎没有多大帮助。
当您尝试访问或操作尚未正确初始化或不存在的对象时,通常会发生此错误。
当您使用 Set-WebConfigurationProperty cmdlet 修改属性时,您尝试修改的属性必须已存在且可访问。您可以在 Set-WebConfigurationProperty 之前使用 Get-WebConfigurationProperty 检查您要修改的属性是否存在于配置中。
如果不存在,Get-WebConfigurationProperty 命令将返回 null 或空结果。如果存在,运行 Get-WebConfigurationProperty 可以帮助确保它正确初始化并可访问。