2013-06-12 23 views
8

Perché asp.net passa dalle normali 404 risposte quando non ci sono errori personalizzati per rispondere con 302 o 200 quando si attivano gli errori personalizzati?Pagina di errore personalizzata ASP.NET Risposta HTTP

Così, per esempio ho provato tutti i seguenti:

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

e

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

e

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

Per quanto posso dire quello superiore dà un 302 come reindirizza alla pagina di errore, la seconda dà 200 per qualche motivo e quella finale dà anche un 302. Questo sembra piuttosto sciocco come voglio ancora un 404 (o qualunque altro codice di errore) ma per visualizzare un messaggio amichevole.

Mi rendo conto che posso inviare una risposta diversa con la mia pagina di errore ma che sembra dare il codice 404 alla pagina di errore e mantiene il 302 sulla richiesta originale.

A meno che non mi manca qualcosa ...

risposta

4

Hai ragione, ASP.NET si comporta un po 'funky quando customErrors sono abilitati. In breve, è possibile impostare redirectMode="ResponseRewrite" per customErrors e impostare in modo specifico il codice di risposta nella pagina error.aspx.

Ho scritto qui i dettagli: Keep ASP.NET error pages out of search engines.

Problemi correlati