Set-WebConfigurationProperty 抛出 NullReferenceException

问题描述 投票:0回答:1

我们有时在 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 站点)。

通常的网络搜索方法似乎没有多大帮助。

windows powershell iis configuration web-config
1个回答
0
投票

当您尝试访问或操作尚未正确初始化或不存在的对象时,通常会发生此错误。

当您使用 Set-WebConfigurationProperty cmdlet 修改属性时,您尝试修改的属性必须已存在且可访问。您可以在 Set-WebConfigurationProperty 之前使用 Get-WebConfigurationProperty 检查您要修改的属性是否存在于配置中。

如果不存在,Get-WebConfigurationProperty 命令将返回 null 或空结果。如果存在,运行 Get-WebConfigurationProperty 可以帮助确保它正确初始化并可访问。

© www.soinside.com 2019 - 2024. All rights reserved.