public override void OnException(HttpActionExecutedContext actionExecutedContext)
        {
            //异常信息
            string error_msg = actionExecutedContext.Exception.Message;

            ExceptionInDB.ToInDB(actionExecutedContext.Exception);

            UnifiedResultEntity <string> model = new UnifiedResultEntity <string>();

            model.msgbox = error_msg;
            actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(HttpStatusCode.OK, model);
            base.OnException(actionExecutedContext);
        }
        public void OnException(ExceptionContext filterContext)
        {
            Exception exception = filterContext.Exception;

            if (filterContext.ExceptionHandled == true)
            {
                return;
            }
            HttpException httpException = new HttpException(null, exception);

            ExceptionInDB.ToInDB(exception);

            /*
             * 1、根据对应的HTTP错误码跳转到错误页面
             * 2、这里对HTTP 404/400错误进行捕捉和处理
             * 3、其他错误默认为HTTP 500服务器错误
             */
            if (httpException != null && (httpException.GetHttpCode() == 400 || httpException.GetHttpCode() == 404))
            {
                //filterContext.HttpContext.Response.StatusCode = 404;
                //filterContext.HttpContext.Response.WriteFile("~/HttpError/404.html");
                filterContext.Result = ReturnResult();
            }
            else
            {
                //filterContext.HttpContext.Response.StatusCode = 500;
                //filterContext.HttpContext.Response.WriteFile("~/HttpError/500.html");
                filterContext.Result = ReturnResult();
            }

            /*---------------------------------------------------------
            * 这里可进行相关自定义业务处理,比如日志记录等
            *  ---------------------------------------------------------*/

            //设置异常已经处理,否则会被其他异常过滤器覆盖
            filterContext.ExceptionHandled = true;

            //在派生类中重写时,获取或设置一个值,该值指定是否禁用IIS自定义错误。
            filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
        }
Exemplo n.º 3
0
        /// <summary>
        /// 当操作中发生未经处理的异常时调用
        /// </summary>
        /// <param name="filterContext"></param>
        protected override void OnException(ExceptionContext filterContext)
        {
            string error_msg = filterContext.Exception.Message;

            if (!filterContext.ExceptionHandled)
            {
                filterContext.ExceptionHandled = true;
                ExceptionInDB.ToInDB(filterContext.Exception);
            }

            if (WorkContext.IsHttpAjax)
            {
                WorkContext.AjaxStringEntity.msg    = 0;
                WorkContext.AjaxStringEntity.msgbox = error_msg;
                filterContext.Result = Json(WorkContext.AjaxStringEntity, JsonRequestBehavior.AllowGet);
            }
            else
            {
                filterContext.Result = PromptView("500", "系统发生错误", error_msg);
                //if (string.IsNullOrWhiteSpace(WorkContext.UrlReferrer))
                //{
                //}
                //else
                //{
                //    PromptModel model = new PromptModel();
                //    model.IsAutoLink = true;
                //    model.IsShowLink = true;
                //    model.Status = "500";
                //    model.Details = error_msg;
                //    model.Message = "系统发生错误";
                //    model.CountdownTime = 10;
                //    model.CountdownModel = 10;
                //    model.LinkUrl = WorkContext.UrlReferrer;
                //    filterContext.Result = PromptView(model);
                //}
            }
        }