Beispiel #1
0
        /// <summary>
        ///     返回失败结果
        /// </summary>
        /// <param name="errorCode"></param>
        /// <returns></returns>
        protected ResponseModel Fail(ErrorCodeEnum errorCode)
        {
            //获得枚举值对应错误信息
            var errorDescription = EnumExtensionHelper.ToEnumDescriptionString((int)errorCode, typeof(ErrorCodeEnum));

            if (string.IsNullOrEmpty(errorDescription))
            {
                errorDescription = "未知错误";
            }
            return(new ResponseModel
            {
                Code = (int)errorCode,
                Message = errorDescription
            });
        }
        public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
        {
            var modelState = actionContext.ModelState;

            if (!modelState.IsValid)
            {
                var checkResult        = new ResponseModel();
                var errorFieldsAndMsgs = modelState.Where(m => m.Value.Errors.Any())
                                         .Select(x => new { x.Key, x.Value.Errors });

                var listErrMsg = new List <dynamic>();
                foreach (var item in errorFieldsAndMsgs)
                {
                    var listMsgDetail = new List <dynamic>();

                    foreach (var msgItem in item.Errors)
                    {
                        //如果存在异常 暴露
                        var exceptionMsg = "";
                        if (msgItem.Exception != null)
                        {
                            exceptionMsg = msgItem.Exception.Message;
                        }
                        listMsgDetail.Add(new { msgItem.ErrorMessage, exceptionMsg });
                    }

                    listErrMsg.Add(new { item.Key, listMsgDetail });
                }

                checkResult.Data    = JsonConvert.SerializeObject(listErrMsg);
                checkResult.Code    = (int)ErrorCodeEnum.ParamsInvalid;
                checkResult.Message = EnumExtensionHelper.ToEnumDescriptionString((int)ErrorCodeEnum.ParamsInvalid, typeof(ErrorCodeEnum));

                //返回异常信息
                actionContext.Response = new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    Content = new StringContent(JsonConvert.SerializeObject(checkResult))
                };
            }
        }