Программный доступ к разделу <компиляция/"> в файле web.config?

Есть ли способ получить доступ к тегу <compilation /> в файле web.config?

Я хочу проверить, установлен ли атрибут "debug" в "true" в файле, но я не могу понять, как это сделать. Я пробовал использовать WebConfigurationManager, но это, похоже, не позволяет мне перейти в раздел <compilation />.

Update:

Я знаю, что могу просто загрузить файл, как XML-документ, и использовать XPath, но я надеялся, что в этой области уже есть что-то, что сделало бы это для меня. Похоже, что будет что-то, потому что уже есть способы получить настройки приложения и строки подключения.

Я также попытался использовать метод WebConfigurationManager.GetSection() несколькими способами:

WebConfigurationManager.GetSection("compilation")// Name of the tag in the file
WebConfigurationManager.GetSection("CompilationSection") // Name of the class that I'd expect would be returned by this method
WebConfigurationManager.GetSection("system.web") // Parent tag of the 'compilation' tag

Все приведенные выше методы возвращают null. Я предполагаю, что есть способ добраться до этого раздела конфигурации, поскольку существует уже существующий класс ('CompilationSection'), я просто не могу понять, как его получить.

Ответ 1

Использование:

using System.Configuration;
using System.Web.Configuration;

...

  CompilationSection configSection =
          (CompilationSection) ConfigurationManager.GetSection( "system.web/compilation" );

Затем вы можете проверить свойство configSection.Debug.

СОВЕТ:, если вам нужно знать, как получить значение из файла конфигурации, проверьте файл machine.config в папке \Windows\Microsoft.net\Framework\<version>\CONFIG. Там вы можете увидеть, как все обработчики раздела конфигурации определены. Как только вы узнаете имя обработчика конфигурации (в данном случае, CompilationSection), вы можете найти его в документах .Net.

Ответ 2

Простой способ проверить, работает ли в режиме отладки, использовать свойство HttpContext.IsDebuggingEnabled. Он получает ответ от атрибута отладки элемента компиляции, который является тем же самым, что вы пытаетесь сделать.

Ответ 3

В конце концов, вы всегда можете загрузить файл Web.config в XmlDocument и использовать запрос XPath, чтобы узнать!

XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("~/Web.config"));     
doc.SelectSingleNode("/configuration/system.web/compilation/@debug");

Однако я предлагаю вам использовать метод Configuration.GetSection для решения.

CompilationSection section = 
    Configuration.GetSection("system.web/compilation") as CompilationSection;
bool debug = section != null && section.Debug;

Ответ 4

Вы всегда можете проверить параметр отладки на уровне компилятора, включив свой код с помощью

#if (DEBUG)

#endif

если это была идея...

Ответ 5

Попробуйте использовать:

HttpContext.Current.IsDebuggingEnabled

Ответ 6

Не можете ли вы загрузить файл как обычный XML файл и использовать XPath для получения узлов?

Ответ 7

Попробуйте использовать метод ConfigurationManager.GetSection.