Программный доступ к разделу <компиляция/"> в файле 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.