Como você descobre quais opções de depuração estão disponíveis?Ou, com um interruptor, descubra o que está sendo desativado?
-
09-06-2019 - |
Pergunta
Nisso pergunta a resposta foi ativar uma chave que é selecionada pelo depurador, desativando o cabeçalho estranho que estava causando o problema.A ajuda da Microsoft implica que essas opções são geradas pelo usuário e não lista nenhuma opção.
<configuration>
<system.diagnostics>
<switches>
<add name="Remote.Disable" value="1" />
</switches>
</system.diagnostics>
</configuration>
O que eu gostaria de saber é de onde vem o valor "Remote.Disable" e como descobrir quais outras coisas podem ser ativadas ou desativadas.Atualmente é apenas uma mágica de configuração, e eu não gosto de mágica.
Solução
Como você suspeitava, Remote.Disable impede que o aplicativo anexe informações de depuração a solicitações remotas.É definido dentro dos métodos do .NET Framework que fazem a solicitação SOAP.
A situação básica é que essas opções podem ser definidas em qualquer lugar do código, basta criar um novo System.Diagnostics.BooleanSwitch com o nome fornecido e o arquivo de configuração pode controlá-las.
Este em particular é definido em 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;
}
}
No seu caso, provavelmente está sendo chamado de System.Web.Services.Protocols.RemoteDebugger.IsClientCallOutEnabled(), que está sendo chamado por System.Web.Services.Protocols.WebClientProtocol.NotifyClientCallOut que por sua vez está sendo chamado pelo método Invoke de System.Web.Services.Protocols.SoapHttpClientProtocol
Infelizmente, que eu saiba, antes de descompilar a estrutura e procurar por
new BooleanSwitch
ou qualquer outro herdeiro do Sistema.Diagnóstico.Switch Classe, não há maneira fácil de saber quais interruptores são definidos.Parece ser o caso de pesquisar msdn/google/stack overflow para o caso específico
Neste caso, usei apenas o Reflector e procurei a string Remote.Disable
Outras dicas
Você pode usar o Reflector para procurar usos da classe Switch e suas subclasses (BooleanSwitch, TraceSwitch, etc).Os vários switches são codificados por nome, então AFAIK não há lista mestre em algum lugar.