对我来说,更好的方法是仅在元素不存在时才插入元素,因为我仅设置某些属性。删除元素将丢弃主元素的任何其他属性(如果存在)。
示例:web.config(不带元素)
<serviceBehaviors>
<behavior name="Wcf.ServiceImplementation.AllDigitalService_Behavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
web.config(带有元素)
<serviceBehaviors>
<behavior name="Wcf.ServiceImplementation.AllDigitalService_Behavior">
<serviceDebug httpsHelpPageEnabled="true" />
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
使用带有XPath表达式的Locator,如果节点不存在,则添加该节点,然后设置我的属性:
<serviceDebug xdt:Transform="Insert"
xdt:Locator="XPath(/configuration/system.serviceModel/behaviors/serviceBehaviors/behavior[not(serviceDebug)])" />
<serviceDebug includeExceptionDetailInFaults="true" xdt:Transform="SetAttributes" />
两个生成的web.config文件都具有includeExceptionDetailInFaults =“ true”,第二个文件保留了httpsHelpPageEnabled属性,而remove / insert方法不会。