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" }; } }
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); }