Ответ 1
HttpContext.IsDebuggingEnabled
http://msdn.microsoft.com/en-us/library/system.web.httpcontext.isdebuggingenabled.aspx
Во время компиляции я могу сделать чек, например
#if DEBUG
Log("something");
#endif
Но что было бы лучше проверить, установлен ли debug="false"
в Web.config во время выполнения?
HttpContext.IsDebuggingEnabled
http://msdn.microsoft.com/en-us/library/system.web.httpcontext.isdebuggingenabled.aspx
В некоторых случаях вам может понадобиться 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
.
Raw
(поскольку DEBUG не является стандартной опцией HTTP-глагола)GET
на DEBUG
Command: stop-debug
(над файлами cookie), но оставьте остальные заголовки и файлы cookie на местеDEBUG
Если веб-сайт возвращает 200 и контент OK
, то вы знаете, что оставили отладку. Веб-сайт вернет 403 - Forbidden
, если debug
выключен.
Если ваш сайт построен на конвейере сборки CI/CD, лучший способ отключить отладку - добавить следующий XDT в Web.Release.config
.
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>
(Отключение отладки в Production является распространенным требованием аудита безопасности)