Как вы и подозревали, Remote.Disable останавливает приложение от прикрепления отладочной информации к удаленным запросам. Он определен внутри методов .NET Framework, которые делают запрос SOAP.
Основная ситуация заключается в том, что эти ключи могут быть определены в любом месте кода, вам просто нужно создать новый переключатель 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.NotifyClientCallO , который в свою очередь вызывается методом Invoke System.Web.Services.Protocols.SoapHttpClientProtocol
К сожалению, насколько мне известно, кроме декомпиляции фреймворка и поиска для
new BooleanSwitch
или любой другой наследник класса System.Diagnostics.Switch ,
Нет простого способа узнать, какие переключатели определены. Кажется, это случай поиска переполнения msdn / google / stack для конкретного случая
В этом случае я просто использовал Reflector и искал строку Remote.Disable