WebAPI AOP方式 异常方式 FilterAttribute、ActionFilterAttribute

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
》》 自定义异常处理特性

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

namespace WebApplication11
{

    /// <summary>
    /// 异常处理特性
    /// </summary>
    public class CustomExceptionAttribute:ExceptionFilterAttribute
    {
        /// <summary>
        /// 方法会在出现异常时触发
        /// </summary>
        /// <param name="actionExecutedContext"></param>
        public override void OnException(HttpActionExecutedContext actionExecutedContext)
        {
            Console.WriteLine($"{ actionExecutedContext.Request.RequestUri.AbsoluteUri}:{actionExecutedContext.Exception.Message}");
            //把当前请求的返回指定一下
            actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(
                HttpStatusCode.OK,
                new
                {
                    Result=false,
                    Msg="请联系管理员"
                });
            //base.OnException(actionExecutedContext);
        }
    }
}

在这里插入图片描述

在这里插入图片描述
》》上面的异常处理有局限性,只有在控制器实例化后,方法执行完之前,出现的异常才能被捕获。所以在控制器中异常是捕获不到的

》》》要捕获全部异常 要用 ExceptionHandler 或者 IExceptionHandler

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http.ExceptionHandling;
using System.Web.Http.Results;

namespace WebApplication11
{
    public class GlobalExceptionHandler:ExceptionHandler
    {
        /// <summary>
        /// 判断是不是要异常处理
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override bool ShouldHandle(ExceptionHandlerContext context)
        {
            return  context.Request.RequestUri.AbsoluteUri.Contains("api") && base.ShouldHandle(context);
        }
        /// <summary>
        /// 异常处理
        /// </summary>
        /// <param name="context"></param>
        public override void Handle(ExceptionHandlerContext context)
        {
            context.Result = new ResponseMessageResult(context.Request.CreateResponse(
                HttpStatusCode.OK,
                new {
                    Result=false,
                    Msg="请联系管理员"
                }
                ));
        }

    }
}

在这里插入图片描述

》》ActionFilterAttribute 在Action执行前 触发OnActionExecuting 执行后 OnActionExecuted

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

namespace WebApplication11
{
    public class CustomActionFilteAttribute:ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            base.OnActionExecuting(actionContext);
        }
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            //在这里可以解决跨越问题
            base.OnActionExecuted(actionExecutedContext);
        }
    }
}

相关推荐

  1. CompletableFuture 异常捕获方式

    2024-06-10 17:02:03       9 阅读
  2. Go语言异常处理方式

    2024-06-10 17:02:03       12 阅读
  3. udp异步方式接收消息

    2024-06-10 17:02:03       36 阅读
  4. SpringBoot全局异常处理方法

    2024-06-10 17:02:03       19 阅读
  5. 机器学习中异常值的处理方式

    2024-06-10 17:02:03       50 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 17:02:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 17:02:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 17:02:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 17:02:03       18 阅读

热门阅读

  1. Leetcode 3181. Maximum Total Reward Using Operations II

    2024-06-10 17:02:03       9 阅读
  2. 机器学习:如何在Python中实现决策树分类?

    2024-06-10 17:02:03       10 阅读
  3. 为什么考试总是无法发挥正常水平?

    2024-06-10 17:02:03       8 阅读
  4. 2D图片的描边

    2024-06-10 17:02:03       10 阅读
  5. 使用vue3+ts封装一个Switch开关组件

    2024-06-10 17:02:03       10 阅读
  6. 每个寒暑假学习一项新技能

    2024-06-10 17:02:03       11 阅读
  7. python小tips

    2024-06-10 17:02:03       8 阅读
  8. git命令

    git命令

    2024-06-10 17:02:03      8 阅读
  9. Python之Pandas详解

    2024-06-10 17:02:03       9 阅读
  10. 04-4.2.3 KMP 算法求 next 数组

    2024-06-10 17:02:03       13 阅读