Je développe un site Web de base MVC3 et je recherche une solution pour gérer les erreurs et rendre des vues personnalisées pour chaque type d'erreur. Imaginez donc que j'ai un contrôleur "Erreur" où son action principale est "Index" (page d'erreur générique) et ce contrôleur aura quelques actions supplémentaires pour les erreurs qui peuvent apparaître à l'utilisateur comme "Handle500" ou "HandleActionNotFound".
Ainsi, chaque erreur qui peut survenir sur le site Web peut être gérée par ce contrôleur "Erreur" (exemples: "Contrôleur" ou "Action" introuvable, 500, 404, dbException, etc.).
J'utilise le fichier Sitemap pour définir les chemins du site Web (et non l'itinéraire).
Cette question a déjà été répondue, ceci est une réponse à Gweebz
Ma dernière méthode applicaiton_error est la suivante:
protected void Application_Error() {
//while my project is running in debug mode
if (HttpContext.Current.IsDebuggingEnabled && WebConfigurationManager.AppSettings["EnableCustomErrorPage"].Equals("false"))
{
Log.Logger.Error("unhandled exception: ", Server.GetLastError());
}
else
{
try
{
var exception = Server.GetLastError();
Log.Logger.Error("unhandled exception: ", exception);
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Errors";
routeData.Values["action"] = "General";
routeData.Values["exception"] = exception;
IController errorsController = new ErrorsController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
catch (Exception e)
{
//if Error controller failed for same reason, we will display static HTML error page
Log.Logger.Fatal("failed to display error page, fallback to HTML error: ", e);
Response.TransmitFile("~/error.html");
}
}
}