Ich entwickle eine MVC3-Basiswebsite und suche nach einer Lösung für die Behandlung von Fehlern und das Rendern benutzerdefinierter Ansichten für jede Art von Fehler. Stellen Sie sich also vor, ich habe einen "Fehler" -Controller, dessen Hauptaktion "Index" (allgemeine Fehlerseite) ist, und dieser Controller verfügt über einige weitere Aktionen für die Fehler, die dem Benutzer möglicherweise wie "Handle500" oder "HandleActionNotFound" angezeigt werden.
Daher kann jeder Fehler, der auf der Website auftreten kann, von diesem "Fehler" -Controller behandelt werden (Beispiele: "Controller" oder "Aktion" nicht gefunden, 500, 404, dbException usw.).
Ich verwende die Sitemap-Datei, um Website-Pfade (und nicht Routen) zu definieren.
Diese Frage wurde bereits beantwortet, dies ist eine Antwort an Gweebz
Meine letzte applicaiton_error-Methode lautet wie folgt:
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");
}
}
}