Überprüfen Sie httpErrors errorMode programmgesteuert

8

Wie bekomme ich den Wert der Eigenschaft errorMode, die im Element <system.webServer><httpErrors> in web.config festgelegt ist?

Ich versuche, eine "Selbstdiagnose" in einer ASP.NET-Webanwendung zu implementieren. Wenn die App startet, durchläuft sie einige der Einstellungen in web.config und bestätigt, dass sie korrekt eingestellt sind.

Dieser Code funktioniert zwar sehr gut, wenn der Fehlercode im Element <system.web><customErrors> gesetzt ist,

%Vor%

Es wird nicht funktionieren, sobald die Site auf IIS7 bereitgestellt wurde und diese Einstellung jetzt in system.webServer -> httpErrors gefunden wird.

Dies wird nicht funktionieren:

%Vor%

Und Casting zu einem CustomErrorsSection scheint auch eine schlechte Idee, es muss einen besseren Typ zu verwenden?

Ich habe diesen Artikel auf IIS.NET HTTP-Fehler gefunden, aber ich hoffe, dies ohne zu tun die Abhängigkeit von der Microsoft.Web.Administration-Bibliothek.

Irgendwelche Vorschläge ??

AKTUALISIEREN

Okay, basierend auf dem folgenden Vorschlag habe ich Folgendes versucht:

%Vor%

Aber das funktioniert auch nicht, das Objekt errSec ist null. Und wenn ich den Abschnitt <system.web><customErrors> mit demselben Ansatz lade, scheitert der Methodenaufruf GetRawXml() mit einem "Diese Operation gilt nicht zur Laufzeit." Ausnahmebedingungsnachricht.

Ich weiß, wie man die gesamte web.config als XML-Datei lädt und abfragt, um zu dem Element zu gelangen, das ich brauche. Aber es scheint mir nur so, als müsste es einen eleganteren Ansatz geben.

So lesen Sie web.config als xml:

%Vor%

... aber das ist nur böse! Und wenn die Einstellung errorMode in machine.config oder ähnlich eingestellt ist, wird es nicht funktionieren.

    
Jakob Gade 24.08.2010, 09:43
quelle

1 Antwort

0

(CustomErrorsSection)HttpContext.Current.GetSection("system.webServer/httpErrors") funktioniert nicht, da dieser Abschnitt aus dem Schema der IIS7-Konfiguration stammt und nicht dasselbe wie CustomErrorsSection (aus der ASP.NET-Konfiguration). Wenn Sie keine Abhängigkeit von der Assemblierung von IIS7 benötigen (was nicht der Fall sein sollte), verwenden Sie nur ConfigurationSection Objekt zum Aufzählen über seine Child-Elemente und bekommen wollen Sie wollen. Oder Sie können die Konfigurationsdatei direkt übernehmen, sie als XML behandeln und die erforderlichen Werte lesen.

    
VinayC 24.08.2010 10:25
quelle

Tags und Links