Программный доступ к разделу <compilation /> файла web.config? - PullRequest
10 голосов
/ 30 декабря 2008

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

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

Обновление:

Я знаю, что могу легко загрузить файл как 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'), я просто не могу понять, как его получить.

Ответы [ 7 ]

25 голосов
/ 30 декабря 2008

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

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 документах.

23 голосов
/ 31 декабря 2008

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

2 голосов
/ 30 декабря 2008

В конце концов, вы всегда можете загрузить файл 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;
1 голос
/ 14 мая 2013

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

HttpContext.Current.IsDebuggingEnabled
1 голос
/ 22 февраля 2011

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

#if (DEBUG)

#endif

на случай, если это была идея ...

0 голосов
/ 30 декабря 2008

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

0 голосов
/ 30 декабря 2008

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

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