Cod*_*313 9 wcf interop web-services
我在WCF客户端和Java Web服务之间存在一个有趣的兼容性问题.简而言之,我发现生成头的方式导致了问题 - 头中的ActivityId和Action元素以及WCF对自定义头的命名空间所做的事情都会导致问题.我已经使用wsdl.exe成功使用了WSDL,但是WCF似乎是以Java Web服务不喜欢的方式操作头.有没有什么办法可以为WCF客户端设置绑定,以便不发送ActivityId和Action元素?
当WCF客户端尝试连接到非WCF服务器(例如JAX-WS,Websphere等)时,通常会发生此问题.
只是为了增加Richard的救命答案并解决@ irperez的评论,ActivityId在WCF诊断跟踪期间需要禁用以阻止WCF诊断添加的实际设置是删除:
ActivityTracing从中移除switchvaluepropagateActivity为false即改变
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml"/>
</listeners>
</source>
...
Run Code Online (Sandbox Code Playgroud)
至:
<source name="System.ServiceModel" switchValue="Information"
propagateActivity="false">
<listeners>
<add name="xml"/>
</listeners>
Run Code Online (Sandbox Code Playgroud)
如果ActivityId启用它,它会将以下内容注入到SOAP标头中,这会破坏毫无疑问的服务器:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<ActivityId CorrelationId="5de75017-da08-4ac2-84f2-5374953cc2a1"
xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">
9f076849-e76e-4675-84c1-5026b1c2eb1a
</ActivityId>
</s:Header>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2716 次 |
| 最近记录: |