public override void OnResultExecuting(ResultExecutingContext actionContext)
        {
            //base.OnResultExecuting(actionContext);
            var modelState = actionContext.ModelState;
            List <ErrorViewModel> errors = new List <ErrorViewModel>();

            if (!modelState.IsValid)
            {
                var baseResult = new WebApiCallBack()
                {
                    status = false,
                    code   = 0,
                    msg    = "请提交必要的参数",
                };
                foreach (var key in modelState.Keys)
                {
                    var state = modelState[key];
                    if (state.Errors.Any())
                    {
                        ErrorViewModel errorView = new ErrorViewModel();
                        errorView.ErrorName = key;
                        errorView.Error     = state.Errors.First().ErrorMessage;
                        errors.Add(errorView);
                        //baseResult.msg += errorView.ErrorName + "-" + errorView.Error;
                    }
                }
                baseResult.data      = errors;
                actionContext.Result = new ContentResult
                {
                    Content     = JsonConvert.SerializeObject(baseResult),
                    ContentType = "application/json"
                };
            }
        }
示例#2
0
        public void OnException(ExceptionContext context)
        {
            NLogUtil.WriteFileLog(NLog.LogLevel.Error, LogType.Web, "全局捕获异常", new Exception("全局捕获异常", context.Exception));
            NLogUtil.WriteDbLog(NLog.LogLevel.Error, LogType.Web, "全局捕获异常", new Exception("全局捕获异常", context.Exception));


            HttpStatusCode status = HttpStatusCode.InternalServerError;

            //处理各种异常
            var jm = new WebApiCallBack();

            jm.status = false;
            jm.code   = (int)status;
            jm.msg    = "发生了全局异常请联系管理员";
            jm.data   = context.Exception;
            context.ExceptionHandled = true;
            context.Result           = new ObjectResult(jm);
        }
        private static async Task WriteExceptionAsync(HttpContext context, Exception e)
        {
            if (e is UnauthorizedAccessException)
            {
                context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
            }
            else if (e is Exception)
            {
                context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
            }

            context.Response.ContentType = "application/json";
            var jm = new WebApiCallBack();

            jm.status = false;
            jm.code   = 500;
            jm.data   = e;
            jm.msg    = "全局数据异常";
            await context.Response.WriteAsync(JsonConvert.SerializeObject(jm)).ConfigureAwait(false);
        }