代码之家  ›  专栏  ›  技术社区  ›  Darryl Braaten

如何找到可用的调试开关?或者给定一个开关,找出被禁用的是什么?

  •  4
  • Darryl Braaten  · 技术社区  · 16 年前

    在这个 question

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

    我想知道的是“Remote.Disable”的值来自哪里,以及如何找到其他可以打开或关闭的东西。目前它只是一些配置魔术,我不喜欢魔术。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Glenn Slaven    16 年前

    正如您所怀疑的,Remote.Disable会阻止应用程序将调试信息附加到远程请求。它是在发出SOAP请求的.NET framework方法中定义的。

    在System.ComponentModel.CompModSwitchs.DisableRemoteDebugging中定义了此特定项:

    public static BooleanSwitch DisableRemoteDebugging
    {
        get
        {
            if (disableRemoteDebugging == null)
            {
                disableRemoteDebugging = new BooleanSwitch("Remote.Disable", "Disable remote debugging for web methods.");
            }
            return disableRemoteDebugging;
        }
    }
    

    在你的情况下,它可能是从 System.Web.Services.Protocols.RemoteDebugger.IsClientCallOutEnabled() ,这是由 System.Web.Services.Protocol.WebClientProtocol.NotifyClientCallOut System.Web.Services.Protocols.SoapHttpClientProtocol

    不幸的是,据我所知,缺少反编译框架&搜寻

    new BooleanSwitch
    

    班 要知道定义了哪些开关,没有简单的方法。这似乎是一个针对特定案例搜索msdn/google/stack overflow的案例

    在这种情况下,我只是使用反射器&已搜索远程。禁用字符串

        2
  •  1
  •   Michael Stum    16 年前