Как получить значение свойства errorMode, установленное в элементе <system.webServer><httpErrors>
в web.config?
Я пытаюсь реализовать некоторую «самодиагностику» в веб-приложении ASP.NET,Когда приложение запускается, оно запускает некоторые параметры в файле web.config и подтверждает, что они установлены правильно.
Хотя этот код работает довольно хорошо, когда режим ошибки установлен в элементе <system.web><customErrors>
,
var errSec = (CustomErrorsSection)HttpContext.Current.GetSection("system.web/customErrors");
Response.Write(errSec.Mode.ToString());
он не будет работать после развертывания сайта на IIS7, и теперь этот параметр находится в system.webServer -> httpErrors
.
Это не сработает:
var errSec = (CustomErrorsSection)HttpContext.Current.GetSection("system.webServer/httpErrors");
И приведение к CustomErrorsSection
также кажется плохой идеей, должен быть лучший тип для использования?
Я нашел эту статью на IIS.NET, HTTP Ошибки , но я надеюсь сделать это без зависимости от библиотеки Microsoft.Web.Administration.
Любые предложения ??
ОБНОВЛЕНИЕ
Хорошо, основываясь на предложении ниже, я попробовал это:
var errSec = (ConfigurationSection)HttpContext.Current.GetSection("system.webServer/httpErrors");
Response.Write(errSec.SectionInformation.GetRawXml().ToString());
Но это тоже не работает, объект errSec
ноль.Кроме того, если я загружаю раздел <system.web><customErrors>
, используя тот же подход, вызов метода GetRawXml()
завершается с ошибкой «Эта операция не применяется во время выполнения».сообщение об исключении.
Я знаю, как загрузить весь файл web.config в виде XML-файла и выполнить запрос, чтобы получить нужный мне элемент.Но мне просто кажется, что должен быть более элегантный подход.
Как читать web.config как xml:
var conf = XDocument.Load(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath + "web.config");
var errMode = conf.Root.Element("system.webServer").Element("httpErrors").Attribute("errorMode").Value;
... но это просто противно!И если параметр errorMode установлен в machine.config или аналогичном, он не будет работать.