2014-09-03 20 views

回答

17

HttpContext.IsDebuggingEnabled是關於web.config中的編譯設置。 Debugger.IsAttached定義是否實際上有監聽來自Web服務器的信息的活動調試器。

見的解釋在DotnetPerls關於HttpContext.IsDebuggingEnabled

調試模式是不是默認。 ...如果您在Web.config中未設置debug =「true」,則該站點將以發佈模式進行編譯。

關於您的問題爲什麼第一個'僅適用於Web應用程序':Web應用程序有能力在運行時編譯,而所有其他.NET產品都是預編譯的。正因爲如此,您可以在web.config中定義構建是否在調試或發佈模式下完成。這是一個僅限於ASP.NET的選項,因此該屬性僅在此處可用。

作爲對第二個問題的回答,爲什麼第一個選項僅適用於ASP.NET:Windows應用程序還有一種方法檢查它的構建狀態:通過檢查DebuggableAttribute,如How to check if an assembly was built using Debug or Release configuration?中所述。

+0

不,沒有更多的問題。順便說一句,我沒有問「爲什麼第一個選項只適用於ASP.NET」。我要求在這兩種選擇之間有更多的差異。無論如何,感謝您在Windows應用程序中指出'DebuggableAttribute'。 – modiX 2014-09-04 21:56:01

+0

@modiX:我用一段關於你的問題的答案更新了答案。 – 2014-09-05 06:42:32

6

IsDebuggingEnabled指的是「調試模式」,它不一定意味着調試器實際上是連接的。您可以通過在web.config文件中設置<compilation debug="true">來將ASP.NET網站設置爲調試模式。

當網站處於調試模式時,JIT優化不適用於視圖文件(.aspx,.cshtml等)中包含的代碼以及任何運行時編譯的代碼隱藏文件或App_Code目錄。還有其他影響。

+0

感謝您另外指出調試模式和無調試模式(關於JIT編譯器)的差異。它伴隨着爲什麼第二個單獨的調試配置合理的事實,所以它伴隨着我們有兩種檢查調試模式的方式。 – modiX 2014-09-04 21:58:59

相關問題