zoukankan      html  css  js  c++  java
  • 解决为MVC和WebAPi添加过滤器

    解决为MVC和WebAPi添加过滤器

    Mvc的就直接在FilterConfig类的RegisterGlobalFilters方法中添加以下代码即可

    Web Api的过滤器没有单独一个配置类,可以写在WebApiConfig类的Register中

     

    MVC过滤器

    public class MvcHandleErrorAttribute : HandleErrorAttribute
        {
            public override void OnException(ExceptionContext filterContext)
            {
                //这里可以做错误日志处理或写数据库等操作
                Console.WriteLine(filterContext.Exception.Message);
                base.OnException(filterContext);
            }
        }
    public class FilterConfig
        {
            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                //filters.Add(new HandleErrorAttribute());
                filters.Add(new MvcHandleErrorAttribute());
            }
        }

    WebApi过滤器

    public class WebApiExceptionFilter : ExceptionFilterAttribute
        {
            public override void OnException(HttpActionExecutedContext context)
            {
    
                var message = context.Exception.Message;
                if (context.Exception.InnerException != null)
                    message = context.Exception.InnerException.Message;
    
                context.Response = new HttpResponseMessage() { Content = new StringContent(message) };
    
                base.OnException(context);
            }
        }
    public static class WebApiConfig
        {
            public static void Register(HttpConfiguration config)
            {
                //是为了让WebApi的控制器自动匹配ApiController
                var suffix = typeof(DefaultHttpControllerSelector).GetField("ControllerSuffix", BindingFlags.Static | BindingFlags.Public);
                if (suffix != null) suffix.SetValue(null, "ApiController");
    
                //为了让WebApi也支持NameSpace
                config.Services.Replace(typeof(IHttpControllerSelector), new NamespaceHttpControllerSelector(config));
    
                //为WebApi添加过滤器
                config.Filters.Add(new WebApiExceptionFilter());
    
                // Web API 路由
                config.MapHttpAttributeRoutes();
    
                config.Routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "api/{controller}/{id}",
                    defaults: new { id = RouteParameter.Optional }
                );
            }
        }
  • 相关阅读:
    django配置(二)邮箱配置
    Xadmin自定义开发 笔记(一)
    django配置(一)STATIC_ROOT
    Python中的Bunch模式
    Django中的QuerySet类
    fedora27配置Mysql
    Django的第一步(第二节)
    Django的第一步(第一节)
    cocos2d-x3.0.1,加载cocostudio ui编辑器导出的json文件出现"Buffer is too small" && 0解决方案
    cocos2d-x ui编辑器导出文件的使用
  • 原文地址:https://www.cnblogs.com/youguess/p/13155780.html
Copyright © 2011-2022 走看看