在编译期间我可以做一个检查
#if DEBUG
Log("something");
#endif
但是,debug="false"
在运行时检查是否在 Web.config 中设置的首选是什么?
在编译期间我可以做一个检查
#if DEBUG
Log("something");
#endif
但是,debug="false"
在运行时检查是否在 Web.config 中设置的首选是什么?
HttpContext.IsDebuggingEnabled
https://docs.microsoft.com/en-us/dotnet/api/system.web.httpcontext.isdebuggingenabled
在某些情况下,您可能需要HttpContext.Current.IsDebuggingEnabled
(有点明显,但尽管如此)
还有另一种非编程的外部和经验方法来检查您是否不小心将debug=true
属性留system.web/compilation
在了 Asp.Net 网站上,即检测您是否在 web.config 中留下了此配置:
<system.web>
<compilation debug="true" targetFramework="xxx"/>
通过使用诸如Fiddler之类的工具,您可以截获对您网站的 GET 请求,然后对其进行更改,以便向该网站发出一个非标准DEBUG
HTTP 动词以及一个额外的Command: stop-debug
Header。
Raw
选项卡(因为 DEBUG 不是标准的 HTTP 动词选项)GET
toDEBUG
Command: stop-debug
标头(在 Cookie 上方),但保留其余的标头和 CookieDEBUG
命令如果网站返回 200 和 content OK
,那么您就知道您已经离开调试了。403 - Forbidden
如果debug
关闭,该网站将返回。
如果您的网站是在 CI/CD 构建管道上构建的,关闭调试的最佳方法是在您的Web.Release.config
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>
(在生产环境中关闭调试是常见的安全审计要求)