我试图实现一种全局异常处理技术,以避免在 Controller 的每个操作上使用try/catch块,但是在达到重写的OnException方法或ErrorHandleAttribute之前,我的应用程序崩溃了。
这是一个简化的测试代码:
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Test()
{
throw new Exception("Exception Test");
}
protected override void OnException(ExceptionContext filterContext)
{
if (filterContext == null || filterContext.ExceptionHandled)
{
return;
}
var message = filterContext.Exception.Message;
filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.BadRequest, message);
filterContext.ExceptionHandled = true;
}
}
并在Web.Config中:
<system.web>
<customErrors mode="On" defaultRedirect="Error"/>
如果我在“throw”行上设置一个断点并尝试访问/Home/Test,则我的应用程序将崩溃,只有在此之后,OnException方法和HandleErrorAttribute才会到达。
我想念什么吗?
谢谢。
最佳答案
您需要注册HandleError
过滤器。
filters.Add(new HandleErrorAttribute{View = "Error"});
关于asp.net - ASP.NET MVC 5中的ErrorHanldeAttribute或OnException方法未处理异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37813300/