SOAP メッセージから「VsDebuggerCausalityData」データを削除するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/32877

質問

特定のクライアントからの受信 SOAP メッセージが無効としてマークされ、XML ファイアウォール デバイスによって拒否されるという問題が発生しています。Visual Studio によって追加のペイロード データが挿入されているようです。これらのメッセージには「VsDebuggerCausalityData」が表示されますが、問題のない別のクライアントから送信された他のメッセージには表示されないため、余分なデータが問題を引き起こしている可能性があると考えています。とにかく、それは出発点です。

私が抱いている質問は、クライアントがこの余分なデータを削除しながら VS から実行できるようにするにはどうすればよいでしょうか?そもそもなぜVSはそれをそこに入れているのでしょうか?

ありがとう。

役に立ちましたか?

解決

ちょっとグーグルで調べてみると、これを削除し、アプリケーションの web.config または app.config に追加する必要があることがわかります。

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

この情報は、受信サービスがクライアントまで追跡するのに役立つデバッグ情報です。(もしかしたら、少し推測してます)

  • フォローアップを提案しました 質問 魔法のスイッチが実際にどこから来たのかを判断するために。

他のヒント

「VsDebuggerCausalityData」を削除するには、次のコマンドを使用して WCF の Visual Studio Diagnostic を停止する必要があります。

VS 2008-> c: Program Files Microsoft Visual Studio 9.0 Common7 IDE> VSDIAG_REGWCF.EXE -U VS 2010-> C: Program Files Microsoft Visual Studio 10.0

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

ダリルの答えは私にとっては役に立ちませんでした。各開発者は ggrocco の答えを実行する必要があります。

結局書いてしまった メッセージインスペクター, 、このコードを 送信リクエスト前 方法:

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

による回答に基づいて、 @Luiz Felipe 私はこのもう少し堅牢な解決策を思いつきました。

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

または、Visual Studio の「デバッグなしで開始」を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top