Welcome to MSDN Blogs Sign in | Join | Help

Гайдар Магдануров

Платформа и инструменты разработки, новости компании Microsoft и мысли об ИТ
Как проверить запущено ли 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(); }

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

Posted: Monday, March 16, 2009 1:32 AM by gaidar
Filed under:

Comments

mr_ST said:

Гм, а чем не устраивает такой вариант:

if (Debugger.IsAttached)

GenerateDebugScript();

else

GenerateReleaseScript();

# March 17, 2009 12:29 PM

mr_ST said:

Гм, а чем не устраивает такой вариант:

if (Debugger.IsAttached)

GenerateDebugScript();

else

GenerateReleaseScript();

# March 17, 2009 12:33 PM

gaidar said:

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

# March 17, 2009 6:19 PM
New Comments to this post are disabled
Page view tracker