【问题标题】:How to remove VsDebuggerCausalityData header section from SOAP request in WCF如何从 WCF 中的 SOAP 请求中删除 VsDebuggerCausalityData 标头部分
【发布时间】:2012-04-24 18:34:48
【问题描述】:

我已经添加了

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

到我的 app.config,但 SOAP 客户端仍会生成标头。

我正在使用带有 messageversion Soap11 和 httpstransport 集的自定义绑定。

有没有简单的去除方法?

【问题讨论】:

    标签: wcf soap .net-3.5 wcf-security


    【解决方案1】:

    基于@Luiz Felipe 的“工作”回答,我想出了这个稍微更强大的解决方案:

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

    【讨论】:

      【解决方案2】:

      尝试在 Visual Studio 中禁用对 WCF 的调试器支持

      运行这个卸载 - vsdiag_regwcf.exe -u

      它位于C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\

      可以使用-i参数重新安装调试器支持,也可以使用-s参数检查是否启用了调试器支持。

      更多详情请查看this

      【讨论】:

        【解决方案3】:

        我通过手动删除负责放入 vscasualitydata 的行为解决了这个问题。

                var vs = srv.Endpoint.Behaviors.Where((i) => i.GetType().Namespace.Contains("VisualStudio"));
                srv.Endpoint.Behaviors.Remove((System.ServiceModel.Description.IEndpointBehavior)vs.Single());
        

        【讨论】:

        • 因为额外的头文件似乎只在调试模式下被添加,您也可以将此代码包装在编译器预处理器指令中,因此代码仅添加到调试版本,即。 #if DEBUG ... #endif
        【解决方案4】:

        当您的配置打开 wcf 跟踪或日志记录时,会添加标头。关闭它们,这将不会被发送。

        【讨论】:

        • 配置中没有设置跟踪或日志记录。如果默认开启,如何关闭?
        • 只有在调试模式下运行,还是在编译发布并在 VS 之外运行 exe 时才会出现这种情况?
        • 它不会在 VS 之外发生。有没有办法在调试时关闭它?
        • 如果它即使在发布模式下也发生在 VS 中,并且对于相同的 .config 它不会在 VS 之外发生,我看不到禁用它的方法。
        猜你喜欢
        • 2010-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-06
        相关资源
        最近更新 更多