Как вы находите, какие отладочные переключатели доступны?Или, получив переключатель, выяснить, что отключается?
-
09-06-2019 - |
Вопрос
В этом вопрос ответ состоял в том, чтобы включить переключатель, который выбирается отладчиком, отключающим посторонний заголовок, который вызывал проблему.Справка Microsoft подразумевает, что эти переключатели созданы пользователем, и не содержит списка каких-либо переключателей.
<configuration>
<system.diagnostics>
<switches>
<add name="Remote.Disable" value="1" />
</switches>
</system.diagnostics>
</configuration>
Что я хотел бы знать, так это откуда взялось значение "Удаленный.Отключить" и как узнать, какие еще вещи можно включить или выключить.В настоящее время это просто какая-то конфигурационная магия, а я не люблю магию.
Решение
Как вы и подозревали, Remote.Disable не позволяет приложению прикреплять отладочную информацию к удаленным запросам.Это определено внутри .Методы NET framework, которые выполняют запрос SOAP.
Основная ситуация заключается в том, что эти переключатели могут быть определены где угодно в коде, вам просто нужно создать новую систему.Диагностика.BooleanSwitch с указанным именем и конфигурационным файлом может управлять ими.
Этот конкретный определен в System.ComponentModel.CompModSwitches.Отключить проверку ошибок:
public static BooleanSwitch DisableRemoteDebugging
{
get
{
if (disableRemoteDebugging == null)
{
disableRemoteDebugging = new BooleanSwitch("Remote.Disable", "Disable remote debugging for web methods.");
}
return disableRemoteDebugging;
}
}
В вашем случае это, вероятно, вызывается из System.Web.Services.Протоколы.Удаленный загрузчик.IsClientCallOutEnabled(), который вызывается System.Web.Services.Протоколы.WebClientProtocol.NotifyClientCallOut который, в свою очередь, вызывается методом Invoke из System.Web.Services.Протоколы.SoapHttpClientProtocol
К сожалению, насколько мне известно, за исключением декомпиляции фреймворка и поиска
new BooleanSwitch
или любой другой наследник Система.Диагностика.Переключатель класс, нет простого способа узнать, какие переключатели определены.Похоже, что это случай поиска msdn / google / stack overflow для конкретного случая
В этом случае я просто использовал Reflector и искал пульт дистанционного управления.Отключить строку
Другие советы
Вы можете использовать Reflector для поиска вариантов использования класса Switch и его подклассов (BooleanSwitch, TraceSwitch и т.д.).Различные переключатели жестко заданы по имени, так что, похоже, где-то нет основного списка.