在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
系统未知bug,代码没有深究。 现象:filters.Add(new HandleErrorAttribute()); 使用了全局的异常处理过滤。 HandleErrorAttribute 核心代码: public virtual void OnException(ExceptionContext filterContext) { if (filterContext == null) { throw new ArgumentNullException("filterContext"); } if (filterContext.IsChildAction) { return; } if (filterContext.ExceptionHandled || !filterContext.HttpContext.IsCustomErrorEnabled) { return; } Exception exception = filterContext.Exception; if (new HttpException(null, exception).GetHttpCode() != 500) { return; } if (!this.ExceptionType.IsInstanceOfType(exception)) { return; } string controllerName = (string)filterContext.RouteData.Values["controller"]; string actionName = (string)filterContext.RouteData.Values["action"]; HandleErrorInfo model = new HandleErrorInfo(filterContext.Exception, controllerName, actionName); filterContext.Result = new ViewResult { ViewName = this.View, MasterName = this.Master, ViewData = new ViewDataDictionary<HandleErrorInfo>(model), TempData = filterContext.Controller.TempData }; filterContext.ExceptionHandled = true; filterContext.HttpContext.Response.Clear(); filterContext.HttpContext.Response.StatusCode = 500; filterContext.HttpContext.Response.TrySkipIisCustomErrors = true; } 经过测试,下面这些代码执行完成之后,页面还是显示黄页黄页。而不是系统 默认的Error视图 web.config中配置:customErrors mode="RemoteOnly" filterContext.ExceptionHandled = true; 有一个项目情况一定是这样的,其他好几个项目正常。 修复代码如下,使用自定义类继承自HandleErrorAttribute 重写方法OnException 加入代码 base.OnException(filterContext); 关键代码:filterContext.HttpContext.ClearError(). 具体原因不明,还有待查证,那位大哥有碰到过??? 猜测可能和httpcontext最后执行的逻辑判断有问题,比如config的配置,运行时参数的不一致等
回家查看asp.net的源代码去,找找ExceptionHandled预计能找到点东西 |
请发表评论