正如您所怀疑的,Remote.Disable 会阻止应用程序将调试信息附加到远程请求。它是在发出 SOAP 请求的 .NET 框架方法中定义的。
基本情况是这些开关可以在代码中的任何地方定义,你只需要创建一个新的 System.Diagnostics.BooleanSwitch 并使用给定的名称,配置文件就可以控制它们。
这个特定的定义在 System.ComponentModel.CompModSwitches.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.Protocols.WebClientProtocol.NotifyClientCallOut 又是由System.Web.Services.Protocols.WebClientProtocol.NotifyClientCallOut调用的,而后者又被 System.Web.Services.Protocols.RemoteDebugger.IsClientCallOutEnabled()调用.Web.Services.Protocols.SoapHttpClientProtocol
不幸的是,据我所知,没有反编译框架和搜索
new BooleanSwitch
或System.Diagnostics.Switch类的任何其他继承者,没有简单的方法可以知道定义了哪些开关。似乎是针对特定情况搜索 msdn/google/stack overflow 的情况
在这种情况下,我只是使用了 Reflector 并搜索了 Remote.Disable 字符串