我按照这篇文章来实现自定义错误页面和错误记录。记录工作正常。但是,当发生异常时,自定义错误页面不显示ajax请求,它适用于正常的http完整请求,例如
http://localhost/MyApp/Report/Create/17/,工作,普通网址请求
http://localhost/MyApp/Report/CreateUser/17/json,使用Ajax无法正常工作
ASP.NET MVC HandleError Attribute, Custom Error Pages and Logging Exceptions
public class BaseController : Controller
{
protected override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);
_log.Error("Error Logging", filterContext.Exception);
// Output a nice error page when customErrors's mode = On.
if (filterContext.HttpContext.IsCustomErrorEnabled)
{
filterContext.ExceptionHandled = true;
this.View("Error").ExecuteResult(this.ControllerContext);
}
}
}
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//Display custom error page using controller.OnException(), HandleErrorAttribute has to be disabled.
//filters.Add(new HandleErrorAttribute());
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
的web.config
<customErrors mode="On">
</customErrors>
任何想法都会非常感激。
答案 0 :(得分:0)
AJAX请求与标准HTML GET \ POST请求不同,因为浏览器不提供结果的自动呈现。对于任何后端堆栈(不限于ASP.Net MVC)都是如此。所以在这种情况下,即使响应包含错误页面的完整html(我怀疑ASP.Net MVC为AJAX调用做了),浏览也不会自动重定向到错误页面
解决这个问题的方法是在AJAX中捕获异常并从客户端重定向到错误页面。