我在WCF客戶端和Java Web服務之間有一個有趣的兼容性問題。總之,我發現生成頭文件的方式會導致問題 - 頭文件中的ActivityId和Action元素以及WCF處理自定義頭文件的命名空間所引發的問題。我已經使用wsdl.exe成功地使用了WSDL,但WCF似乎是以Java Web服務不喜歡的方式來操作標頭。有沒有什麼辦法可以爲WCF客戶端設置綁定,以便不發送ActivityId和Action元素?從WCF請求中刪除ActivityId
回答
您是否在客戶端打開了跟蹤?我認爲這就是添加活動ID,因爲它試圖將跟蹤活動傳遞給服務以進行端到端跟蹤。關閉活動跟蹤標誌,它應該去 - 看到我對操作標題的評論
這是添加這些元素的追蹤;禁用跟蹤幫助解決了這個問題。 Java Web服務沒有很好地解釋SOAP消息(某種奇怪的命名空間問題)。 – CodeMonkey1313
你如何關閉它?它關掉了什麼? – irperez
@irperez我已經縮小了需要停用的設置,以刪除「ActivityId」SOAP標頭。 – StuartLC
當WCF客戶端嘗試連接到非WCF服務器時,通常會發生此問題,例如, JAX-WS下,WebSphere等
只需添加到理查德的救星迴答和地址@ irperez的評論,它需要被禁用,以防止WCF診斷從WCF診斷跟蹤過程中添加ActivityId
實際設置刪除:
- 刪除
ActivityTracing
從switchvalue
- 設置
propagateActivity
到false
即更改
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml"/>
</listeners>
</source>
...
要:
<source name="System.ServiceModel" switchValue="Information"
propagateActivity="false">
<listeners>
<add name="xml"/>
</listeners>
如果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>
- 1. 從請求中刪除default.aspx
- 2. 如何從ASINetworkQueue中刪除請求
- 3. 從簽署的請求中刪除app_data
- 4. 從Angular.js中刪除標頭$ http請求
- 5. 從表單請求中刪除參數
- 6. HTTP刪除請求中J2ME
- 7. 從WCF請求獲取請求域名?
- 8. Foursquare刪除請求
- 9. Node.js刪除請求
- 10. 使用IClientMessageInspector從WCF肥皂請求中刪除操作節點mustUnderstand
- 11. 如何刪除的xmlns =「」從XML請求
- 12. PHP刪除從URL獲取請求
- 13. 從合併請求中刪除文件,但不是從git中刪除文件
- 14. 從GitHub刪除一個關閉的請求請求
- 15. 如何從NServiceKit請求中刪除ContentType要求
- 16. 後刪除重定向頁面從那裏刪除請求來
- 17. 用HTML刪除請求 - AngularJS?
- 18. 通過AJAX請求刪除
- 19. 刪除請求與身體
- 20. 刪除好友請求?
- 21. 使用file_get_contents刪除請求
- 22. Facebook的刪除請求
- 23. oauth2刪除請求,禁止
- 24. 刪除部分請求
- 25. 請求Cookie未被刪除
- 26. 請求刪除github repositorie
- 27. Laravel AJAX刪除請求
- 28. React-Redux刪除HTTP請求
- 29. Long PHP請求被刪除
- 30. PHP CURL刪除請求
你能告訴我們客戶端生成配置? –