2013-06-12 13 views
8

Warum geht asp.net normale 404-Antworten, wenn keine benutzerdefinierten Fehler mit 302 oder 200 reagieren, wenn Sie benutzerdefinierte Fehler aktivieren?ASP.NET benutzerdefinierte Fehlerseite HTTP-Antwort

So zum Beispiel habe ich versucht, alle folgenden:

<customErrors defaultRedirect="Error.aspx" mode="Off"> 
    <error statusCode="404" redirect="Error.aspx?status=404" /> 
</customErrors> 

und

<httpErrors> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <error statusCode="404" path="/error.aspx?status=404" responseMode="ExecuteURL" /> 
</httpErrors> 

und

<httpErrors> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <error statusCode="404" path="/error.aspx?status=404" responseMode="Redirect" /> 
</httpErrors> 

Soweit ich das oberste gibt eine sagen kann, 302, da es auf die Fehlerseite umleitet, die zweite gibt aus irgendeinem Grund eine 200 und die letzte gibt auch eine 302. Dies scheint eher albern, wie ich noch einen 404 (oder was auch immer anderen Fehlercode) will, aber eine freundliche Nachricht anzeigen.

Ich realisiere, dass ich eine andere Antwort zurück mit meiner Fehlerseite senden kann, aber das scheint den 404-Code auf die Fehlerseite zu geben und hält die 302 auf der ursprünglichen Anfrage.

Es sei denn, ich etwas fehlt ...

Antwort

4

Sie haben Recht, verhält sich ASP.NET ein bisschen flippig, wenn customErrors aktiviert sind. Kurz gesagt, Sie können redirectMode="ResponseRewrite" für customErrors festlegen und den Antwortcode speziell in Ihrer error.aspx-Seite festlegen.

Ich habe die Details hier gebloggt: Keep ASP.NET error pages out of search engines.

Verwandte Themen