我在控制器操作上使用[HandleError]属性时遇到问题 - 它似乎根本不起作用(即过滤器是否存在并不重要 - 我得到相同的结果......).当抛出异常时,我在'/'应用程序错误页面而不是我的自定义视图中得到标准的红色服务器错误.
我在SO上找到了关于这个主题的几个其他线程,在大多数情况下,似乎在web.config中将customErrors选项设置为On解决了这个问题.它不适合我,所以我需要找到一个不同的解决方案.
我的控制器动作:
[HandleError]
public ActionResult Index()
{
throw new Exception("oops...");
return View();
}
Run Code Online (Sandbox Code Playgroud)
在我的web.config文件中
<customErrors mode="On"></customErrors>
Run Code Online (Sandbox Code Playgroud)
我确保Error.aspx文件也在共享目录中.我错过了什么?
我正在运行ASP.NET MVC RC Refresh.
我有一个基本控制器类,我将覆盖Controller.OnException处理程序方法,以便为将继承此类的某些类型的控制器提供一般错误处理(这些控制器将返回JSON结果).当控制器引发异常时,永远不会调用OnException方法.有谁看到我做错了什么,还是有更好的方法来处理这种情况?
使用MVC 1.0
基类:
public class APIController : Controller
{
protected override void OnException(ExceptionContext filterContext)
{
//This is never called
filterContext.Result =
new JsonResult();
base.OnException(filterContext);
}
}
Run Code Online (Sandbox Code Playgroud)
继承类:
public class MyController : APIController
{
public AjaxResult ForcedException()
{
throw new SystemException();
}
}
Run Code Online (Sandbox Code Playgroud)