如何使用IISAdministration模块将新元素添加到applicationHost.config的根目录?
我将当前代码(为简洁而编辑)拼凑在一起,以便在IIS 10中引导新网站。
Import-Module IISAdministration
$Manager = Get-IISServerManager
$Name = "my.sitedomain.foo"
$Config = $Manager.GetApplicationHostConfiguration()
$Config.GetSection("system.webServer/security/dynamicIpSecurity",$Name)
$DIPSecurity = $Config.GetSection("system.webServer/security/dynamicIpSecurity",$Name)
if($DIPSecurity -ne $null){
$DIPSecurity.GetChildElement("denyByRequest") | %{
$_.SetAttributeValue("enabled",$true)
$_.SetAttributeValue("maxRequests",20)
$_.SetAttributeValue("requestIntervalInMilliseconds",200)
}
}
当通过IIS管理器修改了dynamicIpSecurity元素时,xml会被添加到配置文件中。但是,开箱即用,我的IIS applicationHost.config没有该网站的<location>
子元素。
目的是检查location元素是否存在,如果不存在,则添加如下内容
<location path="my.sitedomain.foo">
<system.webServer>
<security>
<dynamicIpSecurity>
<denyByConcurrentRequests enabled="true" />
<denyByRequestRate enabled="true" />
</dynamicIpSecurity>
</security>
</system.webServer>
</location>
非常感谢, 詹姆斯
答案 0 :(得分:0)
我的问题措辞很差。真的,我应该问过&#34;如何使用IISAdministration powershell模块为特定站点配置dynamicIpSecurity?&#34;。
由于我对IIS管理和Microsoft.Web.Administration的了解有限,我的注意力集中在错误的障碍上。正确问题的解决方案重新阅读https://docs.microsoft.com/en-us/iis/manage/scripting/how-to-use-microsoftwebadministration#set-configuration-in-site-root-webconfig(感谢Lex Li改变了我的想法)。
通过使用ServiceManager.GetWebConfiguration("name.ofyour.site")
而不是使用ServiceManager.GetApplicationHostConfiguration()
,您将获得指定网站的配置对象,其中包括所有配置元素,而不管实际写入该配置的文件。