As you suspected, Remote.Disable stops the app from attaching debug info to remote requests. It's defined inside the .NET framework methods that make the SOAP request.
The basic situation is that these switches can be defined anywhere in code, you just need to create a new System.Diagnostics.BooleanSwitch with the name given and the config file can control them.
This particular one is defined in 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;
}
}
In your case it's probably being called from System.Web.Services.Protocols.RemoteDebugger.IsClientCallOutEnabled(), which is being called by System.Web.Services.Protocols.WebClientProtocol.NotifyClientCallOut which is in turn being called by the Invoke method of System.Web.Services.Protocols.SoapHttpClientProtocol
Unfortunately, to my knowledge, short of decompiling the framework & seaching for
new BooleanSwitch
or any of the other inheritors of the System.Diagnostics.Switch class,
there's no easy way to know what switches are defined. It seems to be a case of searching msdn/google/stack overflow for the specific case
In this case I just used Reflector & searched for the Remote.Disable string