IsDebuggingEnabled和Debugger.IsAttached之间有什么区别

mod*_*diX 16 .net c# asp.net

System.Web.HttpContext.Current.IsDebuggingEnabled和之间有什么区别System.Diagnostics.Debugger.IsAttached吗?

如果是这样,除了一个仅用于Web应用程序而另一个用于所有类型的项目这一事实之外,还有哪些确切的区别?

Pat*_*man 20

HttpContext.IsDebuggingEnabled是关于web.config中的编译设置.Debugger.IsAttached定义是否实际上有一个活动的调试器监听来自Web服务器的信息.

见在解释DotnetPerls有关HttpContext.IsDebuggingEnabled:

调试模式不是默认模式....如果未在Web.config中设置debug ="true",则以发布模式编译站点.

关于你的问题为什么第一个'仅适用于Web应用程序':Web应用程序能够在运行时进行编译,而所有其他.NET产品都是预编译的.因此,您可以在web.config中定义构建是在Debug或Release模式下完成的.这是仅ASP.NET选项,因此该属性仅在那里可用.

作为第二个问题的答案,为什么第一个选项仅适用于ASP.NET:Windows应用程序还有一种方法可以检查它的构建状态:通过检查如何检查是否使用Debug构建程序DebuggableAttribute集中的说明或发布配置?.


Dai*_*Dai 6

IsDebuggingEnabled是指"调试模式",它并不一定意味着实际附加了调试器.您可以通过<compilation debug="true">web.config文件中设置将ASP.NET网站设置为调试模式.

当网站处于调试模式时,JIT优化不会应用于视图文件(.aspx,.cshtml等)中包含的代码以及任何运行时编译的代码隐藏文件或App_Code目录.还有其他影响.