在Asp.Net Core 2中使用powershell修改web.config

时间:2018-05-03 04:55:58

标签: powershell powershell-v4.0

我需要将以下内容添加到我发布的web.config;

<modules runAllManagedModulesForAllRequests="false">
    <remove name="WebDAVModule" />
</modules>

我正在使用Asp.Net Core 2发布,但它似乎没有起作用;

$webConfig = (Get-Item -Path ".\").FullName + "\Bemfeito.Services.WebApi\obj\Release\netcoreapp2.0\PubTmp\Out\web.config"
$doc = (gc $webConfig) -as [Xml]

$moduleNode = $doc.CreateElement("modules")
$moduleNode.SetAttribute("runAllManagedModulesForAllRequests", "false")
$removeNode = $moduleNode.CreateElement("remove")
$removeNode.SetAttribute("name","WebDAVModule")
$moduleNode.AppendChild($removeNode)

$doc.configuration.system.webServer.AppendChild($moduleNode)

$doc.Save($webConfig)

(我在webdeploy上添加这个作为预发布选项)我认为它与正确抓取和/或提交保存有关吗?有人可以告诉我我哪里出错了吗?

1 个答案:

答案 0 :(得分:0)

添加到节点有很多问题,但主要的问题是我追加到configuration.system.webServer.AppendChild的事实。实际上这应该是configuartion.'system.webServer'.AppendChild

作为参考,我的完整脚本是;

$webConfig = (Get-Item -Path ".\").FullName + 

"\Services.WebApi\obj\Release\netcoreapp2.0\PubTmp\Out\web.config"
$doc = (gc $webConfig) -as [Xml]

$moduleNode = $doc.CreateElement("modules")
$moduleNode.SetAttribute("runAllManagedModulesForAllRequests", "false")


$removeNode = $doc.CreateElement("remove")
$removeNode.SetAttribute("name","WebDAVModule")
$moduleNode.AppendChild($removeNode)

$doc.configuration.'system.webServer'.AppendChild($moduleNode)

$doc.Save($webConfig)