Jak uzyskać wartość właściwości errorMode zestaw w <system.webServer><httpErrors>
elementu w web.config?Sprawdź httpErrors errorMode programowo
Próbuję zaimplementować pewną "autodiagnostykę" w aplikacji sieci web ASP.NET. Po uruchomieniu aplikacji uruchamia niektóre ustawienia w pliku web.config i potwierdza, że są ustawione poprawnie.
Podczas gdy ten kod działa całkiem przyjemnie, gdy errormode jest ustawiony w elemencie <system.web><customErrors>
,
var errSec = (CustomErrorsSection)HttpContext.Current.GetSection("system.web/customErrors");
Response.Write(errSec.Mode.ToString());
to nie będzie działać, gdy strona jest rozmieszczony na IIS7 i ustawienie to jest teraz znaleźć w system.webServer -> httpErrors
.
To nie zadziała:
var errSec = (CustomErrorsSection)HttpContext.Current.GetSection("system.webServer/httpErrors");
i oddające do CustomErrorsSection
również wydaje się złym pomysłem, tam musi być lepszy rodzaj użyciu?
Znalazłem ten artykuł na temat IIS.NET, HTTP Errors, ale mam nadzieję, że zrobię to bez zależności od biblioteki Microsoft.Web.Administration.
Jakieś sugestie?
UPDATE
Dobra, na podstawie poniższej sugestią, próbowałem to:
var errSec = (ConfigurationSection)HttpContext.Current.GetSection("system.webServer/httpErrors");
Response.Write(errSec.SectionInformation.GetRawXml().ToString());
Ale to nie działa albo, obiekt errSec
jest null. I na marginesie, jeśli załaduję sekcję <system.web><customErrors>
przy użyciu tego samego podejścia, wywołanie metody GetRawXml()
kończy się niepowodzeniem z "Ta operacja nie ma zastosowania w czasie wykonywania." komunikat wyjątku.
Wiem, jak załadować cały plik web.config jako plik xml i zapytać, aby dostać się do elementu, którego potrzebuję. Ale wydaje mi się, że musi być bardziej eleganckie podejście.
Jak czytać web.config jak xml:
var conf = XDocument.Load(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath + "web.config");
var errMode = conf.Root.Element("system.webServer").Element("httpErrors").Attribute("errorMode").Value;
... ale to jest po prostu brzydki! A jeśli ustawienie errorMode jest ustawione w pliku machine.config lub podobnym, nie będzie działać.
Zawsze możesz użyć odbicia ;-) – Steven
Tak, zapomniałem wspomnieć o podejściu "czytaj jako xml" jako innej opcji, której chciałbym uniknąć. :) Próbowałem załadować go jako ConfigurationSection, ale nie mogłem dowiedzieć się, jak dostać się do właściwości errorMode. Jakieś pomysły? –