Ich habe Ausnahmen erfasst und die Benutzer auf eine Fehlerseite umgeleitet. Ich übergebe die Ausnahmemeldung und eine Rückgabe-URL, um dem Benutzer mitzuteilen, was passiert ist, und ihm zu ermöglichen, eine andere Seite aufzurufen.
try
{
return action(parameters);
}
catch (Exception exception)
{
ErrorViewModel errorModel = new ErrorViewModel();
errorModel.ErrorMessage = "An error occured while doing something.";
errorModel.ErrorDetails = exception.Message;
errorModel.ReturnUrl = Url.Action("Controller", "Action");
return RedirectToAction("Index", "Error", errorModel);
}
Dies scheint wie Weg zu viel Code, um jede Aktion zu umgehen. Ich verwende einen globalen Filter für Fehler:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
HandleErrorAttribute attribute = new HandleErrorAttribute();
filters.Add(attribute);
}
und ich habe meine web.config wie folgt eingerichtet:
<customErrors mode="On" defaultRedirect="~/Error/Unknown">
Dies funktioniert jedoch nur bei unbehandelten Ausnahmen.
Ich möchte, dass Ausnahmen eine Umleitung zu einem Fehler-Controller/einer Aktion mit einem Parameter, der die Ausnahmedetails enthält, verursachen. Es wäre schön, wenn ich die Rückgabe-URL auf einer Aktion-zu-Aktion-Basis angeben könnte, oder einen Standard zu haben, wenn keine bereitgestellt wird.