打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
mvc、webapi杂记
原文链接:http://www.cnblogs.com/ToughGuy/p/5157113.html


//1、JsonSerializerSettings
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings = new Newtonsoft.Json.JsonSerializerSettings
{
DateFormatString = "yyyy-MM-dd HH:mm:ss",//用于WebAPI日期序列化
};

//2、禁用格式化器
    // Remove the JSON formatter

    // 删除JSON格式化器    config.Formatters.Remove(config.Formatters.JsonFormatter);
// or(或者)
// Remove the XML formatter // 删除XML格式化器 config.Formatters.Remove(config.Formatters.XmlFormatter);


//3、解决MvcJsonResult返回的Date格式化(/Date(1359522345000)/),以继承折方式重写即可。
//http://www.cnblogs.com/JerryWang1991/archive/2013/03/08/2950457.html

//4、WebApi全局异常处理

config.Filters.Add(new WebApiExceptionFilter());

public partial class WebApiExceptionFilter : ExceptionFilterAttribute    {        public override void OnException(HttpActionExecutedContext context)        {            var Ex = context.Exception;            //增加二行 Trace 代码            Trace.TraceError("异常: {0}", Ex.Message);            Trace.TraceError("请求 URI: {0}", context.Request.RequestUri);            var message = Ex.Message;            if (Ex.InnerException != null)                message = Ex.InnerException.Message;            //注意:ResponseException不会来            if (Ex is NotImplementedException)            {                context.Response = context.Request.CreateResponse(HttpStatusCode.NotImplemented, new HttpError("此方法暂未实现"));            }            else if (Ex is InvalidOperationException)            {                context.Response = context.Request.CreateResponse(HttpStatusCode.BadRequest, new HttpError("未将对象引用设置到对象的实例,可能存在无效参数"));            }            else if (Ex is NotFondException)            {                context.Response = context.Request.CreateResponse(HttpStatusCode.NotFound, new HttpError("所需实例不存在"));            }            else if (Ex is PageSizeException)            {                context.Response = context.Request.CreateResponse(HttpStatusCode.NotFound, new HttpError(Ex.Message));            }            else if (Ex is ExException)            {                var ExEx = Ex as ExException;                context.Response = context.Request.CreateResponse(HttpStatusCode.BadRequest, new JsonRet(ExEx.Code, ExEx.Message,ExEx.Object));            }            else            {                if (Ex.Message.Contains("String or binary data would be truncated."))                {                    context.Response = context.Request.CreateResponse(HttpStatusCode.NotFound, new HttpError("可能存在字段的字符超长!"));                }                else                {                    context.Response = context.Request.CreateResponse(HttpStatusCode.InternalServerError, new HttpError(Ex.Message));                }            }            base.OnException(context);        }    }
View Code

//5、数据注解-模型验证
GlobalConfiguration.Configuration.Filters.Add(new ModelValidationFilterAttribute());

    // Model验证    public class ModelValidationFilterAttribute : ActionFilterAttribute    {        public override void OnActionExecuting(HttpActionContext context)        {            var modelState = context.ModelState;            if (modelState.IsValid == false)            {                //返回多个                var errors = new List<object>();                foreach (var state in modelState)                {                    if (state.Value.Errors.Count > 0)                    {                        var ErrorMessage = state.Value.Errors[0].ErrorMessage;                        if (string.IsNullOrEmpty(ErrorMessage))                        {                            var Message = state.Value.Errors[0].Exception.Message;                            if (Message.Contains("Could not convert "))                            {                                Message = "参数格式错误,请重新录入!";                            }                            errors.Add(new { Success = false, Code = -1, Key = state.Key, Message = Message });                        }                        else                        {                            errors.Add(new { Success = false, Code = -1, Key = state.Key, Message = ErrorMessage });                        }                    }                    else                    {                    }                }                context.Response = context.Request.CreateResponse(HttpStatusCode.OK, errors.Count > 0 ? errors[0] : null);            }        }    }
View Code
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Web API系列(三)统一异常处理
WebApi异常处理解决方案(5)(下)
搭建webapi相关配置
ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)
AjaxPro 内部机制探讨
HttpClient + ASP.NET Web API, WCF之外的另一个选择
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服