如何从SOAP消息中删除“VsDebuggerCausalityData”数据?

时间:2008-08-28 17:38:08

标签: visual-studio web-services soap

我遇到一个问题,即来自某个特定客户端的传入SOAP消息被标记为无效并被我们的XML防火墙设备拒绝。 Visual Studio正在插入额外的有效负载数据;我们认为额外的数据可能导致问题b / c我们在这些消息中看到“VsDebuggerCausalityData”但在其他没有问题的客户端发送的其他数据中没有。无论如何,这是一个起点。

我的问题是客户端如何删除这些额外数据并仍然从VS运行?为什么VS会把它放在那里?

感谢。

5 个答案:

答案 0 :(得分:16)

要删除'VsDebuggerCausalityData',您需要使用此命令停止对WCF的Visual Studio诊断:

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

我希望这可以帮助你或其他人。

答案 1 :(得分:11)

快速谷歌显示,这应该摆脱它,让他们将其添加到web.config或app.config为他们的应用程序。

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

信息是调试信息,接收服务可以使用它来帮助将事物追溯到客户端。 (也许,我猜一点)

  • 我建议跟进question以确定魔术开关实际来自哪里。

答案 2 :(得分:6)

达里尔的回答对我不起作用。每个开发人员都必须做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;
    }
}

答案 3 :(得分:5)

基于@Luiz Felipe的回答,我提出了这个稍微强大的解决方案:

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

答案 4 :(得分:2)

或者在Visual Studio中使用“Start without debugging”。