【问题标题】:How to remove "VsDebuggerCausalityData" data from SOAP message?如何从 SOAP 消息中删除“VsDebuggerCausalityData”数据?
【发布时间】:2010-09-07 04:01:21
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: visual-studio web-services soap


    【解决方案1】:

    要删除“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

    我希望这对您或其他人有所帮助。

    【讨论】:

    • VS 2015 是 C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\vsdiag_regwcf.exe -u
    【解决方案2】:

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

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

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

    • 我已建议跟进question 以确定魔术开关是否真正来自。

    【讨论】:

    • 这在 .NET 4.0 中对我来说是失败的。我将此部分添加到我的配置文件中,现在客户端在实例化时抛出异常。
    【解决方案3】:

    根据@Luiz Felipe 的回答,我想出了这个更强大的解决方案:

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

    【讨论】:

    • 这应该是答案。由于所选的不适用于VS2017
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      或者在 Visual Studio 中使用“不调试就开始”。

      【讨论】:

      • VsDebuggerCausalityData 节点仍包含在发布版本中。
      • 我认为从端点的行为中删除行为是一种更通用的解决方案。
      猜你喜欢
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      相关资源
      最近更新 更多