2008-08-28 30 views
14

特定のクライアントからの着信SOAPメッセージが無効であるとマークされ、XMLファイアウォールデバイスによって拒否されるという問題が発生しました。追加のペイロードデータがVisual Studioによって挿入されているようです。余分なデータがこれらのメッセージに「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をフォローアップ。このコマンドを使用してWCFのためのVisual Studioの診断デ止める必要が削除のために
+3

これは、.NET 4.0で私のために失敗しています。私はこのセクションを私の設定ファイルに追加しました。そして、クライアントはインスタンス化の例外をスローします。 –

13

'VsDebuggerCausalityData':

VS 2008 - > C:\ Program Files \ MicrosoftビジュアルStudio 9.0 \ Common7 \ IDE> vsdiag_regwcf.exe -u VS 2010 - > c:¥Program Files¥Microsoft Visual Studio 10.0¥Common7¥IDE> vsdiag_regwcf.exe -u

これはあなたや他の人に役立つことを願っています。

+0

VS 2015はC:¥Program Files¥Microsoft Visual Studio 12.0¥Common7¥IDE¥vsdiag_regwcf.exe -u – CheeZe5

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で "デバッグなしで開始" を使用。

+0

です.VsDebuggerCausalityDataノードはまだリリースビルドに含まれています。 –

2

@Luiz Felipeによって回答に基づいて、私はこの少しより堅牢な解決策を考え出した:

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