asp.net-mvc
Http Error Handling
Ricerca…
introduzione
Ogni sito web deve gestire gli errori. Puoi lasciare che i tuoi utenti visualizzino le pagine di errore 404 o 500 che IIS utilizza, oppure, utilizzando il Web.Config e un semplice controller, puoi catturare questi errori e pubblicare le tue pagine di errore personalizzate.
Impostazione di base
Questo esempio coprirà la creazione di una pagina di errore personalizzata per 404 Page Not Found e 500 Server Error. È possibile estendere questo codice per acquisire qualsiasi codice di errore necessario.
web.Config
Se si utilizza IIS7 e versioni successive, ignorare il nodo <CustomError..
e utilizzare <httpErrors...
invece.
Aggiungere quanto segue nel nodo system.webServer
:
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="404" path="/error/notfound" responseMode="ExecuteURL" />
<error statusCode="500" path="/error/servererror" responseMode="ExecuteURL" />
</httpErrors>
Questo dice al sito di indirizzare qualsiasi errore 404 a ~/error/notfound
e qualsiasi errore 500 a ~/error/servererror
. Conserverà anche l'URL richiesto (pensa al trasferimento piuttosto che al reindirizzamento ) in modo che l'utente non veda mai l'URL della pagina ~/error/...
Quindi, è necessario un nuovo controller degli Error
quindi ...
public class ErrorController : Controller
{
public ActionResult servererror()
{
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = (int)HttpStatusCode.InternalServerError;
return View();
}
public ActionResult notfound()
{
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = (int)HttpStatusCode.NotFound;
return View();
}
}
La cosa fondamentale da notare qui è Response.TrySkipIisCustomErrors = true;
. Ciò aggirerà IIS e forzerà la tua pagina di errore.
Infine, crea le corrispondenti NotFound
e NotFound
e ServerError
in modo che siano tutte gradevoli e senza problemi con il design del tuo sito.
Ciao, pagine di errore personalizzate.