C# 检查asp.net web应用程序在运行时是否处于调试模式的首选方法?

C# 检查asp.net web应用程序在运行时是否处于调试模式的首选方法?,c#,asp.net,web-config,C#,Asp.net,Web Config,在编译期间,我可以执行如下检查 #if DEBUG Log("something"); #endif 但是,在运行时,如果在Web.config中设置了debug=“false”,那么最好检查什么?HttpContext.IsDebuggingEnabled 在某些情况下,您可能需要启用HttpContext.Current.isdebugging(有点明显,但无论如何)还有另一种非编程的外部经验方法来检查您是否意外地将debug=true属性留在Asp.Net网站上的system.w

在编译期间,我可以执行如下检查

#if DEBUG
    Log("something");
#endif

但是,在运行时,如果在Web.config中设置了
debug=“false”
,那么最好检查什么?

HttpContext.IsDebuggingEnabled


在某些情况下,您可能需要启用
HttpContext.Current.isdebugging
(有点明显,但无论如何)

还有另一种非编程的外部经验方法来检查您是否意外地将
debug=true
属性留在Asp.Net网站上的
system.web/compilation
,也就是说,要检测您是否在web.config中打开了此配置:

 <system.web>
    <compilation debug="true" targetFramework="xxx"/>

(在生产环境中关闭调试是一项常见的安全审核要求)

当您使用Visual studio IDE运行项目时,它会要求修改web.config文件以启用调试。为什么不打开web.config文件并查找它?其目的是在发布后进行检查,这就是为什么运行时检查很重要。有时,我希望在生产环境中启用调试,以获取某些操作的详细日志,因此,如果生产服务器处于调试模式,它将抛出兆字节的日志,但当我禁用它时,它将执行正常日志记录。我意识到我也可以使用log4net级别来实现这一点,但通过这种方式,我可以动态创建JS文件并启用详细JavaScript跟踪消息的Ajax日志记录!我不希望ajax请求记录一些东西,只是为了让log4net忽略它,因为级别:)@AlbertoLeón我希望检查是编程的,用于将代码编码到文件中的细粒度日志检查-我不会在生产中更改代码。我今天需要这样做。也许这里的两个答案应该合并成一个?如果使用的是静态方法,则需要使用HttpContext.Current。我不确定HttpContext本身是否有效。@BryanRayner:当您在控制器中时,通常有一个名为HttpContext的属性可用。
<system.web>
  <compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>