5 Stimmen

ASP.NET/IIS: 404 für alle Dateitypen

Ich habe eine 404-Handler-Seite in der web.config eingerichtet, aber sie funktioniert NUR, wenn die URL-Erweiterung .aspx (oder eine andere, die von ASP.NET gehandhabt wird) lautet. Ich weiß, dass ich in den Website-Optionen eine statische HTML-Seite einrichten kann, aber ich möchte eine Seite haben. Gibt es eine Möglichkeit, eine ASPX-Handler-Seite für alle Anfrageerweiterungen in IIS zuzuweisen?

11voto

John Rudy Punkte 36386

Die direkte Frage war, ob es Optionen gibt, um den ASPX-Handler allen Anfrageerweiterungen zuzuweisen oder nicht: Ja, die gibt es. Ich werde in Kürze erläutern, wie man das macht.

Zunächst denke ich, dass die "versteckte" Frage - die Antwort, die Sie wirklich wollen - ist, ob es eine Möglichkeit gibt, alle 404-Fehler für andere Seiten als ASPX, ASMX usw. umzuleiten. Ja, das gibt es, und das ist die besser ob das Problem dadurch gelöst werden kann.

Um alle 404er in IIS 6 umzuleiten, klicken Sie mit der rechten Maustaste auf Ihre Webanwendung Root (sei es eine eigene Site oder ein virtuelles Verzeichnis in der Hauptsite) und wählen Sie "Eigenschaften". Wählen Sie dort die Registerkarte "Benutzerdefinierte Fehler". Suchen Sie in der Liste den Eintrag 404 und ändern Sie ihn auf die gewünschte Umleitung.

Wenn das nicht ausreicht - und ich hoffe wirklich, dass es das tut -, dann können Sie jede Seite durch den ASPX-Handler laufen lassen. Dies geht jedoch zu einem ziemlich hohen Preis in Bezug auf die Effizienz - rohes HTML/Bild-Serving ist wesentlich schneller als alles Dynamische.

Klicken Sie dazu mit der rechten Maustaste auf Ihre Webanwendung Root und wählen Sie "Eigenschaften". Wählen Sie die Registerkarte "Stammverzeichnis". Klicken Sie auf "Konfiguration"; es öffnet sich ein neues Fenster. Kopieren Sie den Pfad von einer der ASP.NET-Seiten und verwenden Sie ihn dann für eine Wildcard-Anwendungszuordnung.

Auch hier ist zu beachten, dass es sich um die falsche Antwort die meiste Zeit über. Es wird sich negativ auf Ihre Leistung auswirken und ist das Äquivalent zur Verwendung einer Kettensäge, um einen Truthahn zu tranchieren. Ich empfehle dringend, die erste Option dieser vorzuziehen, wenn sie für Sie in Frage kommt.

0 Stimmen

Danke für die vollständige Antwort. Wir werden die Leistung testen und dann entscheiden, welche wir wählen werden.

2voto

Murph Punkte 9805

Für Informationen:

Dies ist eines der vielen netten Dinge, die IIS7 mit sich bringt - alle Seiten werden durch den Handler geleitet, so dass Sie benutzerdefinierte 404s und - nützlicherweise - Sicherheit auf Verzeichnis- und Dateiebene für jede Datei (basierend auf demselben web.config-Zeug wie für asp.net-Dateien vor IIS7).

Also ist "II7 verwenden" eine Antwort (wird "die" Antwort in der Zeit sein) - aber natürlich ist es keine sehr praktische Antwort, wenn Sie nicht auf W2k8 (oder höher) hosten/gehostet werden.

1voto

Joel Coehoorn Punkte 377088

Die web.config kann nur Fehlerseiten für Seiten einrichten, die von ihrer Website kontrolliert werden. Wenn Sie andere Seiten außerhalb des Zuständigkeitsbereichs der ASP.Net-Anwendung haben, richten Sie die Behandlung für sie in IIS ein. Dort gibt es eine Option zur Konfiguration der 404-Seite, mit der Sie auf Ihre eigene Seite verweisen können.

1voto

mattlant Punkte 15146

Die einzige andere Sache, die mir einfällt, ist die Übergabe ALLER Erweiterungen an asp.net.

Auf diese Weise werden alle Arten von Dateien von asp.net verarbeitet und Ihre benutzerdefinierte Fehlerseite funktioniert.

1 Stimmen

Es würde funktionieren, aber es gibt Leistungsüberlegungen für Websites mit hohem Verkehrsaufkommen.

1voto

Mark Cidade Punkte 95914

In der IIS-Anwendungskonfiguration können Sie eine Wildcard-Zuordnung (".*") festlegen, um C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X