2008-08-28 4 views
4

In diesem question war die Antwort auf einen Schalter, der vom Debugger aufgehoben wird, der den fremden Header deaktiviert, der das Problem verursachte. Die Microsoft-Hilfe impliziert, dass diese switched usergeneriert sind und keine Switches auflisten.Wie finden Sie, welche Debug-Schalter verfügbar sind? Oder bei einem Wechsel herausfinden, was deaktiviert ist?

<configuration> 
    <system.diagnostics> 
    <switches> 
     <add name="Remote.Disable" value="1" /> 
    </switches> 
    </system.diagnostics> 
</configuration> 

Was würde Ich mag es, wissen, wo der Wert „Remote.Disable“ herkommt und wie finden Sie heraus, was andere Dinge ein- oder ausgeschaltet werden kann. Momentan ist es nur etwas Konfigurationszauber und mag keine Magie.

Antwort

2

Wie Sie vermutet haben, hält Remote.Disable die App davon ab, Debug-Informationen an Remote-Anfragen anzuhängen. Es ist in den .NET-Framework-Methoden definiert, die die SOAP-Anfrage stellen.

Die grundlegende Situation ist, dass diese Schalter überall im Code definiert werden können, Sie müssen nur einen neuen System.Diagnostics.BooleanSwitch mit dem angegebenen Namen erstellen und die Konfigurationsdatei kann sie steuern.

Dieses bestimmte man in System.ComponentModel.CompModSwitches.DisableRemoteDebugging definiert:

public static BooleanSwitch DisableRemoteDebugging 
{ 
    get 
    { 
     if (disableRemoteDebugging == null) 
     { 
      disableRemoteDebugging = new BooleanSwitch("Remote.Disable", "Disable remote debugging for web methods."); 
     } 
     return disableRemoteDebugging; 
    } 
} 

In Ihrem Fall ist es wahrscheinlich von System.Web.Services.Protocols.RemoteDebugger.IsClientCallOutEnabled(), genannt wird, die wird von System.Web.Services.Protocols.WebClientProtocol.NotifyClientCallOut genannt, die durch die Methode der Invoke System.Web.Services.Protocols.SoapHttpClientProtocol wird wiederum

gerufen

Leider meines Wissens, kurz decompiling Rahmen & seaching für

new BooleanSwitch 

oder einen der anderen Erben der System.Diagnostics.Switch Klasse, gibt es keine einfache Möglichkeit, zu wissen, was Schalter definiert. Es scheint ein Fall des Suchens Msdn/google/Stapelüberlauf für den speziellen Fall

In diesem Fall werden Ich Reflektor nur verwendet & für die Remote.Disable Zeichenfolge gesucht

1

Sie können Reflector verwenden, um nach Verwendungen der Switch-Klasse und ihrer Unterklassen (BooleanSwitch, TraceSwitch usw.) zu suchen. Die verschiedenen Schalter sind namentlich fest codiert, also gibt es bei AFAIK keine Master-Liste.

+0

Hallo, was Baugruppen tun Sie geöffnet haben müssen um diese zu finden? Mit dem Standardsatz, der in Reflektor geöffnet ist, finde ich keine Entsprechungen ... – rohancragg

+0

TraceSwitch ist in System.Diagnostics (System.dll), das in der Voreinstellung für Reflektor sein sollte. –