我遇到一个问题,来自某个特定客户端的传入 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”,您需要使用以下命令停止 Visual Studio Diagnostic for WCF:

VS 2008-> c: program Files Microsoft Visual Studio 9.0 COONM77 IDE> VSDIAG_REGWCF.EXE -U -U VS 2010-> C: PROGRAN FILES FILES MICROSOFT VISUAL Studio 10.0 common7 common7 common> vsdiag_regwcf.exe -u -u

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

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