Web.Config 转换 - 命名空间部分未转换
Web.Config transformation - section with namespace not being transformed
我在 ASP.Net WCF .Net Framework 4.0 上有一个 web.config,并且我根据构建环境进行了转换。
问题是我的 system.serviceModel 部分中有一个诊断部分。在基础 web.config 这是空的:
<diagnostics></diagnostics>
然后在我的转换中,我们应用包含名称空间的过滤器,如下所示:
<diagnostics performanceCounters="All" xdt:Transform="Replace">
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="300000" maxSizeOfMessageToLog="200000000">
<filters>
<add xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/s:Envelope/s:Header/a:Action[contains(.,'IMyService')]</add>
</filters>
</messageLogging>
</diagnostics>
应用转换时 (xdt:Transform="Replace"),我得到:
<diagnostics performanceCounters="All">
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true"
maxMessagesToLog="300000" maxSizeOfMessageToLog="200000000">
<filters>
<add>/s:Envelope/s:Header/a:Action[contains(.,'IMyService')]</add>
</filters>
</messageLogging>
</diagnostics>
这导致 web.config 出现 Xml 错误,无法正常工作。
所以目标是在转换之后,名称空间声明将出现在每个“添加”元素上。我试过在配置级别声明命名空间但没有成功...
正在恢复,这是过滤器的当前输出:
<add>/s:Envelope/s:Header/a:Action[contains(.,'IMyService')]</add>
我们希望它是这样的:
<add xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/s:Envelope/s:Header/a:Action[contains(.,'IMyService')]</add>
我该如何克服这个问题?
我找不到合适的解决方案,甚至之前声明的命名空间也不起作用...
我们最终没有转换,而是每个环境的整个 web.config,然后在发布时选择合适的并假定为正确的。
我在 ASP.Net WCF .Net Framework 4.0 上有一个 web.config,并且我根据构建环境进行了转换。
问题是我的 system.serviceModel 部分中有一个诊断部分。在基础 web.config 这是空的:
<diagnostics></diagnostics>
然后在我的转换中,我们应用包含名称空间的过滤器,如下所示:
<diagnostics performanceCounters="All" xdt:Transform="Replace">
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="300000" maxSizeOfMessageToLog="200000000">
<filters>
<add xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/s:Envelope/s:Header/a:Action[contains(.,'IMyService')]</add>
</filters>
</messageLogging>
</diagnostics>
应用转换时 (xdt:Transform="Replace"),我得到:
<diagnostics performanceCounters="All">
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true"
maxMessagesToLog="300000" maxSizeOfMessageToLog="200000000">
<filters>
<add>/s:Envelope/s:Header/a:Action[contains(.,'IMyService')]</add>
</filters>
</messageLogging>
</diagnostics>
这导致 web.config 出现 Xml 错误,无法正常工作。
所以目标是在转换之后,名称空间声明将出现在每个“添加”元素上。我试过在配置级别声明命名空间但没有成功...
正在恢复,这是过滤器的当前输出:
<add>/s:Envelope/s:Header/a:Action[contains(.,'IMyService')]</add>
我们希望它是这样的:
<add xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">/s:Envelope/s:Header/a:Action[contains(.,'IMyService')]</add>
我该如何克服这个问题?
我找不到合适的解决方案,甚至之前声明的命名空间也不起作用...
我们最终没有转换,而是每个环境的整个 web.config,然后在发布时选择合适的并假定为正确的。