Was ist der Unterschied zwischen IsDebuggingEnabled und Debugger.IsAttached
Gibt es irgendwelche Unterschiede zwischen System.Web.HttpContext.Current.IsDebuggingEnabled
und System.Diagnostics.Debugger.IsAttached
?
Wenn ja, was sind die genauen Unterschiede außer der Tatsache, dass man nur für web-Anwendungen, während die anderen arbeiten in alle Art von Projekten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
HttpContext.IsDebuggingEnabled
ist über die Zusammenstellung Einstellung in der web.config.Debugger.IsAttached
definiert, wenn es tatsächlich eine aktive debugger hören die Informationen aus dem web-server.Siehe die Erklärung bei DotnetPerls über
HttpContext.IsDebuggingEnabled
:Bezüglich Ihrer Frage, warum der erste 'ist nur für web-Anwendungen: web-Anwendungen haben die Fähigkeit zu kompilieren, zur Laufzeit, während alle anderen .NETTO-Produkte sind bereits kompiliert. Weil dieses, definieren Sie in der web.config wenn der build fertig ist im Debug-oder Release-Modus. Dies ist ein ASP.NET only-option, so dass die Eigenschaft ist nur dort erhältlich.
Als Antwort auf Ihre zweite Frage, warum die erste option ist nur für ASP.NET: Es gibt auch einen Weg für eine Windows-Anwendung zu überprüfen, ist es build-status: durch die überprüfung der
DebuggableAttribute
wie in Wie Sie überprüfen, wenn eine Baugruppe wurde mit Debug oder Release-Konfiguration?.DebuggableAttribute
auf windows-Anwendungen.IsDebuggingEnabled
bezieht sich auf "debug-Modus", das bedeutet nicht zwangsläufig, ein debugger ist tatsächlich angebracht. Sie können ASP.NET websites in den debug-Modus aus, indem Sie<compilation debug="true">
in Ihremweb.config
Datei.Wenn eine website ist im debug-Modus, JIT-Optimierungen werden nicht angewendet-code in der view-Dateien (.aspx -, .cshtml usw.) sowie allfällige runtime-kompilierten code-behind-Dateien oder die
App_Code
- Verzeichnis. Es gibt auch andere Effekte.