我已ErrorController
自定义处理我的网站错误。
非常标准:
public class ErrorController : BaseController
{
public ActionResult Error404(Exception ex)
{
return View();
}
public ActionResult Error500(Exception ex)
{
return View();
}
}
但是,如果在View代码中发生了一些渲染异常(这可能会发生,因为页面具有Master页面(主布局)并且可能发生不同),那么我无法捕获该渲染异常。
我真的可以通过实施ActionFilterAttribute.OnResultExecuted
来看到这个例外:
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
if (filterContext.Exception != null)
{
// not sure what to do here
} else base.OnResultExecuted(filterContext);
}
但是在那种情况下,MVC会在发生异常后查找〜/ Shared / Error.cshtml (包括此路径),并且我无法向其提供错误视图呈现异常用户 - "最后机会例外"。
有没有办法解决这个问题?
答案 0 :(得分:1)
这是一篇关于ASP.Net MVC中异常处理的好文章,应该有帮助
Method 4:- Inheriting from “HandleErrorAttribute”
public class CustomHandleErrorAttribute: HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
Exception ex = filterContext.Exception;
filterContext.ExceptionHandled = true;
var model = new HandleErrorInfo(filterContext.Exception, "Controller", "Action");
filterContext.Result = new ViewResult()
{
ViewName = "Error",
ViewData = new ViewDataDictionary(model)
};
}
}
然后将其附加到您的基本控制器。