【发布时间】:2021-07-08 11:53:05
【问题描述】:
我在 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”元素上。我尝试在配置级别声明命名空间但未成功...
继续,这是过滤器上的当前输出:
<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>
我该如何克服这个问题?
【问题讨论】:
标签: wcf