我一直在捕获异常并将用户重定向到错误页面。我传递异常消息和返回 URL 来告诉用户发生了什么并允许他们返回另一个页面。
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);
}
这似乎是太多的代码来环绕每个动作。我正在对错误使用全局过滤器:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
HandleErrorAttribute attribute = new HandleErrorAttribute();
filters.Add(attribute);
}
我有这样的 web.config 设置:
<customErrors mode="On" defaultRedirect="~/Error/Unknown">
但是,这只适用于未处理的异常。
我希望异常导致重定向到错误控制器/操作,该操作采用包含异常详细信息的参数。如果我可以逐个操作地指示返回 URL,或者如果没有提供默认值,那就太好了。