Как определить, работает ли сайт ASP.NET «нормально» или в «отладке» через Visual Studio? - PullRequest
0 голосов
/ 03 апреля 2009

Как я могу определить, в каком «режиме» работает мой сайт?

В этом конкретном случае у меня есть код на страницах с выделенным кодом, который должен действовать в одностороннем порядке в режиме «релиз» - это кто-то перемещается туда с помощью браузера, и другой способ, если я нахожусь в режиме отладки из VS2008. , (Это такие вещи, как определение используемой строки подключения SQL, отображать или нет определенные сообщения об ошибках или предупреждения и т. Д.)

VS2008 настроен на прохождение IIS по разным причинам (Кассини не вариант).

Поиск по всей справке. Я ничего не могу найти, но ДОЛЖЕН быть способ определить, как был запущен сайт.

Заранее спасибо.

Ответы [ 4 ]

7 голосов
/ 03 апреля 2009

Я не уверен, что вы имеете в виду. Если вы хотите узнать, выполняется ли отладка приложения, вы можете проверить свойство System.Diagnostics.Debugger.IsAttached. Если вы хотите узнать, скомпилировано ли приложение в режиме отладки, вы можете сделать это:

#if DEBUG
   const bool DebugMode = true;
#else
   const bool DebugMode = false;
#endif

Также вы можете использовать ConditionalAttribute:

[System.Diagnostics.Conditional("DEBUG")]
public void ThisMethodWillOnlyExecuteInDebugMode()
{
}

Я настоятельно рекомендую пересмотреть это, хотя - по моему опыту, отличное поведение при выпуске и отладке - отличный способ внести ошибки в ваш рабочий код.

4 голосов
/ 03 апреля 2009
HttpContext.Current.IsDebuggingEnabled

См. эту статью

1 голос
/ 03 апреля 2009

Я использую этот метод, чтобы определить, включена ли отладка в разделе компиляции: -

bool DebugModeOn()
{
    System.Web.Configuration.CompilationSection configSection =
             (System.Web.Configuration.CompilationSection)HttpContext.Current.GetSection("system.web/compilation");
    return configSection.Debug;

}

Это не идеально для того, что вы просите. Однако, поскольку это должно быть ложным в производстве и истинным в развитии, оно может быть достаточно хорошим.

Редактировать : Или вы можете просто использовать свойство IsDebuggingEnabled контекста, как указывает Оливье ПЕЙЕН. : P ой.

0 голосов
/ 03 апреля 2009

Я бы использовал

#if DEBUG
    // ...
#else
    // ...
#endif

подход, однако, я бы использовал это только для перехвата исключений в методе "Main":

  • Если отладка, то не перехватить (чтобы отладчик мог перехватить любые необработанные исключения),
  • если выпустить, показать страницу с ошибкой.

Это не меняет поток программы, просто не делайте этого, есть драконы:)

Если вы посмотрите на строки подключения, например, я просто поместил бы их в web.config.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...