2008-08-28 57 views
14

我已經得到了來自一個特定的客戶端傳入的SOAP消息被標記爲無效,並通過我們的XML防火牆設備被拒絕的問題。它顯示額外的有效載荷數據正在由Visual Studio插入;我們正在考慮額外的數據可能會導致問題B/C我們在這些消息中而不是在其他人誰是沒有問題的不同的客戶端發送看到「VsDebuggerCausalityData」。無論如何,這是一個起點。如何從SOAP消息中刪除「VsDebuggerCausalityData」數據?

我的問題是如何在客戶端刪除此額外的數據,仍然由VS運行?爲什麼VS把它放在那裏呢?

謝謝。

回答

10

快速谷歌發現,這應該擺脫它,讓他們將其添加到web.config或app.config中爲他們的應用。

<configuration> 
    <system.diagnostics> 
    <switches> 
     <add name="Remote.Disable" value="1" /> 
    </switches> 
    </system.diagnostics> 
</configuration> 

的信息是調試信息,接收服務可以用來幫助跟蹤的東西回客戶端。 (也許,我猜測一點)

  • 我建議跟進question來確定魔術開關究竟是從哪裏來的。
+3

這是失敗的,我在.NET 4.0中。我將這部分添加到我的配置文件中,現在客戶端在實例化時拋出異常。 – 2011-09-22 17:21:30

13

對於刪除 'VsDebuggerCausalityData' 您需要在使用該命令停止去的Visual Studio診斷爲WCF:

2008 VS - > C:\ Program Files文件\微軟的Visual Studio 9.0 \ Common7 \ IDE> vsdiag_regwcf.exe -u VS 2010 - > C:\ Program Files文件\微軟的Visual Studio 10.0 \ Common7 \ IDE> vsdiag_regwcf.exe -u

我希望這個幫你或其他人。

+0

VS 2015是C:\ Program Files文件\微軟的Visual Studio 12.0 \ Common7 \ IDE \ vsdiag_regwcf.exe -u – CheeZe5 2016-12-21 15:20:56

5

歐陽的回答並沒有爲我工作。每個開發者都必須做ggrocco的答案。

我最後寫一個MessageInspector,並添加以下代碼到BeforeSendRequest方法:

int limit = request.Headers.Count; 
for(int i=0; i<limit; ++i) 
{ 
    if (request.Headers[i].Name.Equals("VsDebuggerCausalityData")) 
    { 
     request.Headers.RemoveAt(i); 
     break; 
    } 
} 
2

;或用 「不開始調試」 在Visual Studio中。基於由@Luiz Felipe的答案,我想出了這個稍微更強大的解決方案

+0

的`VsDebuggerCausalityData`節點仍然包含在發佈版本。 – 2016-07-25 14:15:03

2

var vs = client.Endpoint.EndpointBehaviors.FirstOrDefault((i) => i.GetType().Namespace == "Microsoft.VisualStudio.Diagnostics.ServiceModelSink"); 
if (vs != null) 
{ 
    client.Endpoint.Behaviors.Remove(vs); 
}