次の方法で共有


Как проверить запущено ли ASP.NET приложение в режиме отладки?

Иногда очень хочется знать, запущено ли ASP.NET приложение под отладчиком или работает на боевом сервере, например для того, чтобы определиться, какой код генерировать на странице или в элементе управления, подменить версию .js / .css файла для разработки на пожатую для боевого сервера и т.д. Для этого существуют два способа – очевидный и честный.

Очевидный способ – воспользоваться информацией из web.config (<compilation debug="true" />):

if ( HttpContext.Current.IsDebuggingEnabled ) { GenerateDebugScript(); } else { GenerateReleaseScript(); }

Однако, этот способ не является корректным, если у самой ASP.NET страницы установлена директива Debug="true" – в этом случае страница будет в режиме отадки, даже если в web.config указано обратное compilation debug="false".

Честный способ – узнать о реальном положении дел на уровне сборки:

if ( Assembly.GetExecutingAssembly().IsDefined(typeof(DebuggableAttribute)) ) { GenerateDebugScript(); } else { GenerateReleaseScript(); }

В этом случае мы точно знаем, что работаем с версией для отладки.

Comments

  • Anonymous
    March 17, 2009
    Гм, а чем не устраивает такой вариант: if (Debugger.IsAttached) GenerateDebugScript(); else GenerateReleaseScript();

  • Anonymous
    March 17, 2009
    Гм, а чем не устраивает такой вариант: if (Debugger.IsAttached) GenerateDebugScript(); else GenerateReleaseScript();

  • Anonymous
    March 17, 2009
    Нет, поскольку это свойство говорит лишь о присувии Debugger. Мы можем запустить отладочную версию и без отадчика (например, только для отладки клиенстких скриптов).