.net core webapi 自定义异常过滤器
创始人
2024-11-05 07:12:36
0

1.定义统一返回格式

namespace webapi;  ///  /// 统一数据响应格式 ///  public class Results {     ///      /// 自定义的响应码,可以和http响应码一致,也可以不一致     ///      public int Code { get; set; }      ///      /// 中文消息提示     ///      public string? Msg { get; set; }      ///      /// 是否成功     ///      public bool Success { get; set; }      ///      /// 响应的数据     ///      public T? Data { get; set; }      ///      /// 返回的Token: 如果有值,则前端需要此这个值替旧的token值     ///      public string? Token { get; set; }      ///      /// 设置数据的结果     ///      /// 数据     ///      public static Results DataResult(T data)     {         return new Results { Code = 1, Data = data, Msg = "请求成功", Success = true };     }      ///      /// 响应成功的结果     ///      ///      ///      public static Results SuccessResult(string msg = "操作成功")     {         return new Results { Code = 1, Data = default, Msg = msg, Success = true };     }      ///      /// 响应失败的结果     ///      ///      ///      public static Results FailResult(string msg = "请求失败")     {         return new Results { Code = -1, Data = default, Msg = msg, Success = false };     }      ///      /// 参数有误     ///      ///      ///      public static Results InValidParameter(string msg = "参数有误")     {         return new Results { Code = -1, Data = default, Msg = msg, Success = false };     }      ///      /// 获取结果     ///      ///      ///      ///      ///      ///      public static Results GetResult(int code = 0, string? msg = null, T? data = default, bool success = true)     {         return new Results { Code = code, Data = data, Msg = msg, Success = success };     }      ///      /// 设置token结果     ///      ///      ///      public static Results TokenResult(string token)     {         return new Results { Code = 1, Data = default, Msg = "请求成功", Success = true, Token = token };     } } 

2.定义异常过滤器

using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc;  namespace webapi {     ///      /// 全局异常过滤器     ///      public class ExceptionFilter : Attribute, IExceptionFilter     {         private readonly ILogger _logger;          public ExceptionFilter(ILogger logger)         {             _logger = logger;         }          ///          /// 当发生异常的时候会执行此方法         ///          ///          ///          public void OnException(ExceptionContext context)         {             var values = context.RouteData.Values;             var controller = values["controller"];             var action = values["action"];             _logger.LogError($"控制器:{controller},方法:{action},详细信息:\n");             WriteDetailErrorMsg(context.Exception);             context.Result = new JsonResult(Results.FailResult(context.Exception.Message));         }          ///          /// 递归获取内部异常信息         ///          ///          ///          private void WriteDetailErrorMsg(Exception exception)         {             if (exception.InnerException != null)             {                 _logger.LogError(exception.StackTrace + "\n\n");                 WriteDetailErrorMsg(exception.InnerException);             }             else             {                 _logger.LogError("报错:" + exception.Message);                 _logger.LogError("堆栈跟踪:" + exception.StackTrace);             }         }     } } 

3.在控制器注入自定义的异常过滤器

             builder.Services.AddControllers(opt => {                 opt.Filters.Add();             }); 
4.定义一个错误的api接口 
        [HttpDelete]         public ActionResult Detele()         {             int i = 0;//除数不能为0;             return Content((1 / i).ToString());         } 

5.访问api接口
在这里插入图片描述
错误信息全记录到了,并输出到控制台,这里可以记录日志到文本文件或数据库。

相关内容

热门资讯

第5分钟了解!wejoker黑... 第5分钟了解!wejoker黑侠辅助器,hardrock作弊,指南书教程(确实有挂)wejoker黑...
一分钟辅助!欢乐达人葫芦鱼辅助... 一分钟辅助!欢乐达人葫芦鱼辅助(辅助挂)总是是真的辅助app(了解有挂)1、完成欢乐达人葫芦鱼辅助辅...
三分钟了解!wepoker黑侠... 三分钟了解!wepoker黑侠辅助器正版下载,哈糖大菠萝有没有挂,绝活儿教程(真的有挂)1、上手简单...
第三分钟辅助!余干辅助软件哪个... 第三分钟辅助!余干辅助软件哪个好(辅助挂)一直有辅助攻略(确实有挂)1、玩家可以在余干辅助软件哪个好...
八分钟了解!wepoker辅助... 八分钟了解!wepoker辅助透视软件,werplan怎么作弊,总结教程(有挂教学)1、下载好wep...
第四分钟辅助!奇迹脚本辅助器手... 第四分钟辅助!奇迹脚本辅助器手机版(辅助挂)确实存在有辅助工具(有挂技巧)1.奇迹脚本辅助器手机版 ...
第5分钟了解!hhpoker透... 第5分钟了解!hhpoker透视脚本,wepoker有辅助插件吗,课程教程(真是有挂)一、wepok...
九分钟辅助!余干5十k外挂(辅... 九分钟辅助!余干5十k外挂(辅助挂)确实真的有辅助软件(有挂辅助)1、全新机制【余干5十k外挂ai辅...
截至发稿!wepoker黑侠破... 截至发稿!wepoker黑侠破解,决战13水辅助,办法教程(有挂教程)1、在决战13水辅助插件功能辅...
4分钟了解!德普软件,破解辅助... 4分钟了解!德普软件,破解辅助插件wepoker,教材教程(有挂方式)1.破解辅助插件wepoker...