20

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

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

ありがとう。

4

5 に答える 5

18

「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\Common7\IDE>vsdiag_regwcf.exe -u

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

于 2010-06-18T00:57:03.103 に答える
11

簡単なグーグルは、これがそれを取り除くべきであることを明らかにし、彼らに彼らのアプリケーションのためにそれをweb.configまたはapp.configに追加させる。

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

この情報は、受信サービスがクライアントまでさかのぼって追跡するために使用できるデバッグ情報です。(たぶん、私は少し推測しています)

  • マジックスイッチが実際にどこから来たのかを判断するためのフォローアップ質問を提案しました。
于 2008-08-28T20:27:38.450 に答える
10

の回答に基づいて、@Luiz Felipeこのもう少し堅牢なソリューションを思いつきました。

var vs = client.Endpoint.EndpointBehaviors.FirstOrDefault((i) => i.GetType().Namespace == "Microsoft.VisualStudio.Diagnostics.ServiceModelSink");
if (vs != null)
{
    client.Endpoint.Behaviors.Remove(vs);
}
于 2016-07-25T14:27:46.667 に答える
7

ダリルの答えは私にはうまくいきませんでした。各開発者は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;
    }
}
于 2012-09-05T21:11:30.767 に答える
2

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

于 2014-10-16T11:21:54.407 に答える