2008-11-05 8 views
16

Ich habe eine Website, wo ich CustomErrors in der Datei web.config verwenden, um eine benutzerdefinierte Fehlerseite anzugeben, und das funktioniert gut. Die benutzerdefinierte 404-Seite wird auch in der IIS-Konfiguration angegeben (denn wenn nicht, erhalte ich meine benutzerdefinierte 404-Seite nicht).ASP.NET aspxerrorpath in URL

Aber ich habe eine Logik, die eingreift, wenn ein Benutzer eine 404 erhält, die ihre angeforderte URL betrachtet und gegebenenfalls einen Navigationsvorschlag vornimmt. Diese Logik basiert auf dem aspxerrorpath-Wert. Auf meinem Entwicklungs-PC wird der aspxerrorpath wie folgt korrekt an die URL angehängt: http://localhost:3092/FileNotFound.aspx?aspxerrorpath=/badpage.aspx, aber auf meiner Testseite ist kein aspxerrorpath an die URL angehängt, so dass meine gesamte benutzerdefinierte Logik umgangen wird und meine Vorschläge nicht Arbeit. Ich bin mir nicht sicher, ob dies ein IIS-Konfigurationsproblem oder etwas anderes ist. Der Webserver ist Windows Server 2008 mit IIS 7.

Irgendwelche Gedanken?

Vielen Dank.

+0

beschrieben. Wird auf dem Server auf FileNotFound.aspx umgeleitet oder bleibt die URL gleich, wenn der Fehler auftritt? Gibt es in der web.config einen Wert für defaultRedirect? Wenn Sie die Werte in diesem Element entfernen, ändert sich das Verhalten? –

+0

Danke John. Weitere Informationen: Auf dem Server bleibt die URL die gleiche (es geht nicht zu FileNotFound.aspx). In der Datei web.config ist kein defaultRedirect-Wert enthalten. – theog

Antwort

18

Der Parameter aspxerrorpath wird übergeben, wenn der Fehler von .NET abgefangen wurde (und die in web.config angegebene Fehlerseite verwendet wird). Dies geschieht, wenn Sie den Entwicklungswebserver verwenden oder wenn IIS so konfiguriert ist, dass die Datei nicht überprüft wird.

Wenn IIS überprüft, ob die Datei vorhanden ist, dann wird der benutzerdefinierten Fehler in IIS konfiguriert ist, verwendet wird, und die angeforderte URL in der Abfragezeichenfolgeflag als so etwas wie

http://example.com/FileNotFound.aspx?404;http://example.com/badpage.aspx

6

Sie enthalten sind, können die unten hinzuzufügen haben

<customErrors mode="On"> 
    <error statusCode="404" redirect="~/error404.aspx" /> 
</customErrors> 

mehr Informationen erhalten Sie auf web.config: http://geekswithblogs.net/shahed/archive/2007/10/23/116278.aspx

Update: Wir können die IIS7-Funktionalität zum Anzeigen von benutzerdefinierten 404-Fehlerseiten mit HTTP-Modulen verwenden, wie in http://professionalaspnet.com/archive/2008/02/13/Enforcing-a-Custom-404-Page-in-ASP.NET.aspx

+0

Danke Ramesh. Ich habe dies in der web.config festgelegt. – theog

+0

@theog: Bitte lassen Sie mich wissen, welche nicht vorhandenen Seite Sie versuchen, in Testmaschine zuzugreifen. Ist es mit dem Arbeitsprozess von Aspnet verbunden? Schauen Sie sich auch 404 HttpModule an, das in http://professionalaspnet.com/archive/2008/02/13/Enforcing-a-Custom-404-Page-in-ASP.NET.aspx beschrieben wird – Ramesh