zoukankan      html  css  js  c++  java
  • Asp.net Web Api添加异常筛选器

    一.定义一个异常筛选器

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Http.Filters;
    using System.Net;
    using System.Net.Http;

    namespace WebApi
    {
        public class NotImplExceptionFilter:ExceptionFilterAttribute
        {
            public override void OnException(HttpActionExecutedContext context)
            {
                if (context.Exception is NotImplementedException)
                {
                    context.Response = new HttpResponseMessage(HttpStatusCode.NotFound);
                }
            }
        }
    }

    注意:HttpStatusCode.NotFound 状态码只是随意定的,我这里

    二.引用过滤器

    (1)全局使用(对所有Action有效),在Global.asax中注册异常筛选器,如下

        public class WebApiApplication : System.Web.HttpApplication
        {

            protected void Application_Start()
            {
                GlobalConfiguration.Configure(WebApiConfig.Register);

        GlobalConfiguration.Configuration.Filters.Add(new NotImplExceptionFilter());
            }
        }

    (2)指定Action使用

            [NotImplExceptionFilter]

            public IEnumerable<Contact> Get(string id = null)
            {

        ...

        throw new NotImplementedException("This method is not implemented");

            }

    三.控制器的Action加引用
            public IEnumerable<Contact> Get(string id = null)
            {
                var thecontact= from contact in contacts
                       where contact.Id == id || string.IsNullOrEmpty(id)
                       select contact;
                if (thecontact == null || thecontact.Count()==0)
                {
                    var resp = new HttpResponseMessage(HttpStatusCode.NotFound)
                    {
                        Content = new StringContent(string.Format("No product with ID={0}", id)),
                        ReasonPhrase = "Product ID Not Found"
                    };
                    throw new NotImplementedException("This method is not implemented");
                }
                return thecontact;
            }

  • 相关阅读:
    杨晓峰-Java核心技术-6 动态代理 反射 MD
    ARouter 路由 组件 跳转 MD
    领扣-5 最长回文子串 Longest Palindromic Substring MD
    算法 递归 迭代 动态规划 斐波那契数列 MD
    二叉树 遍历 先序 中序 后序 深度 广度 MD
    算法 数组中出现次数最多的数字 MD
    领扣-754 到达终点数字 Reach a Number MD
    领扣-1/167 两数之和 Two Sum MD
    文件 File 常见操作 工具 MD
    IO流 简介 总结 API 案例 MD
  • 原文地址:https://www.cnblogs.com/ajilisiwei/p/6103454.html
Copyright © 2011-2022 走看看