Подтвердить что ты не робот

Предпочтительный способ проверить, работает ли веб-приложение asp.net в режиме отладки во время выполнения?

Во время компиляции я могу сделать чек, например

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

Но что было бы лучше проверить, установлен ли debug="false" в Web.config во время выполнения?

4b9b3361

Ответ 2

В некоторых случаях вам может понадобиться HttpContext.Current.IsDebuggingEnabled (что-то вроде очевидного, но тем не менее)

Ответ 3

Есть еще один незапрограммированный внешний и эмпирический способ проверить, случайно ли вы оставили атрибут debug=true в system.web/compilation на веб-сайте Asp.Net, то есть определить, не оставили ли вы эту конфигурацию в файле web.config:

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

Используя такой инструмент, как Fiddler, вы можете перехватить запрос GET на свой веб-сайт, а затем изменить его так, чтобы выдавал нестандартный DEBUG HTTP Глагол на сайт вместе с дополнительным заголовком Command: stop-debug.

  • Выберите запрос GET на свой сайт и перетащите его в Composer
  • Перейдите на вкладку Raw (поскольку DEBUG не является стандартной опцией HTTP-глагола)
  • Изменить глагол с GET на DEBUG
  • Добавьте дополнительный заголовок Command: stop-debug (над файлами cookie), но оставьте остальные заголовки и файлы cookie на месте
  • Выполните команду DEBUG

Если веб-сайт возвращает 200 и контент OK, то вы знаете, что оставили отладку. Веб-сайт вернет 403 - Forbidden, если debug выключен.

Fiddler Screenshot

Если ваш сайт построен на конвейере сборки CI/CD, лучший способ отключить отладку - добавить следующий XDT в Web.Release.config.

<system.web>
  <compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>

(Отключение отладки в Production является распространенным требованием аудита безопасности)