• mvc、webapi杂记



    //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
  • 相关阅读:
    spring-framework-x.x.x.RELEASE-dist下载教程
    SpringMVC——SpringMVC简介
    SSM框架报错分析(一)——There is no getter for property named 'XXX' in 'class java.lang.String'
    mysql一次查询,返回多个统计结果
    Mybatis进阶学习笔记——关系查询——一对多查询
    Mybatis进阶学习笔记——关系查询——一对一查询
    Mybatis进阶学习笔记——动态sql
    Mybatis进阶学习笔记——输出映射
    C#语言概述
    第一个C#程序Hello World
  • 原文地址:https://www.cnblogs.com/ToughGuy/p/5157113.html
Copyright © 2020-2023  润新知