asp.net-mvc
Traitement des erreurs HTTP
Recherche…
Introduction
Chaque site Web doit gérer les erreurs. Vous pouvez laisser vos utilisateurs voir les pages d'erreur 404 ou 500 stockées par IIS ou, à l'aide de Web.Config et d'un simple contrôleur, capturer ces erreurs et fournir vos propres pages d'erreur personnalisées.
Configuration de base
Cet exemple couvrira la création d'une page d'erreur personnalisée pour 404 Page Not Found et 500 Server Error. Vous pouvez étendre ce code pour capturer tout code d'erreur dont vous avez besoin.
Web.Config
Si vous utilisez IIS7 et supérieur, ignorez le noeud <CustomError..
et utilisez <httpErrors...
Ajoutez ce qui suit dans le nœud 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>
Cela indique au site de diriger les erreurs 404 vers ~/error/notfound
et toute erreur 500 vers ~/error/servererror
. Il préservera également l'URL demandée (pensez à transférer plutôt qu'à rediriger ) pour que l'utilisateur ne voie jamais l'URL de la page ~/error/...
Ensuite, vous avez besoin d'un nouveau contrôleur d' Error
afin ...
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();
}
}
L'essentiel à noter ici est le Response.TrySkipIisCustomErrors = true;
. Cela contournera IIS et forcera votre page d'erreur à travers.
Enfin, créez les NotFound
et ServerError
correspondantes et ServerError
-les en forme de manière à ce qu'elles soient parfaitement ServerError
la conception de votre site.
Hey presto - pages d'erreur personnalisées.