asp.net-mvc
HTTP foutafhandeling
Zoeken…
Invoering
Elke website moet fouten verwerken. U kunt uw gebruikers de 404- of 500-foutpagina's laten zien die IIS uitschrijft of met behulp van Web.Config en een eenvoudige controller kunt u deze fouten vastleggen en uw eigen aangepaste foutpagina's afleveren.
Basic Setup
In dit voorbeeld wordt het maken van een aangepaste foutpagina voor 404 pagina niet gevonden en 500 serverfout behandeld. U kunt deze code uitbreiden om elke gewenste foutcode vast te leggen.
Web.Config
Als u IIS7 en hoger gebruikt, negeer dan het knooppunt <CustomError..
en gebruik in plaats daarvan <httpErrors...
Voeg het volgende toe aan het knooppunt 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>
Dit vertelt de site om 404-fouten te ~/error/notfound
naar ~/error/notfound
en elke 500-fouten naar ~/error/servererror
. Het zal ook uw gevraagde URL behouden (denk aan overdracht in plaats van omleiden ) zodat de gebruiker nooit de URL van de ~/error/...
-pagina zal zien.
Vervolgens hebt u een nieuwe Error
nodig, dus ...
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();
}
}
Het belangrijkste om hier op te merken is de Response.TrySkipIisCustomErrors = true;
. Dit omzeilt IIS en dwingt je foutpagina erdoorheen.
Maak ten slotte de bijbehorende NotFound
en ServerError
weergaven en style ze zodat het allemaal mooi en naadloos aansluit op het ontwerp van uw site.
Hey presto - aangepaste foutpagina's.