| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | 
							- using Microsoft.AspNetCore.Http;
 
- namespace OASystem.API.Middlewares
 
- {
 
-     /// <summary>
 
-     /// 全局异常捕获中间件
 
-     /// </summary>
 
-     public class ExceptionHandlingMiddleware
 
-     {
 
-         private readonly RequestDelegate _next;  // 用来处理上下文请求
 
-         private readonly ILogger<ExceptionHandlingMiddleware> _logger;
 
-         /// <summary>
 
-         /// 初始化
 
-         /// </summary>
 
-         /// <param name="next"></param>
 
-         /// <param name="logger"></param>
 
-         public ExceptionHandlingMiddleware(RequestDelegate next, ILogger<ExceptionHandlingMiddleware> logger)
 
-         {
 
-             _next = next;
 
-             _logger = logger;
 
-         }
 
-         /// <summary>
 
-         /// 执行中间件
 
-         /// </summary>
 
-         /// <param name="httpContext"></param>
 
-         /// <returns></returns>
 
-         public async Task InvokeAsync(HttpContext httpContext)
 
-         {
 
-             try
 
-             {
 
-                 await _next(httpContext); //要么在中间件中处理,要么被传递到下一个中间件中去
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 await HandleExceptionAsync(httpContext, ex); // 捕获异常了 在HandleExceptionAsync中处理
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 异步处理异常
 
-         /// </summary>
 
-         /// <param name="context"></param>
 
-         /// <param name="exception"></param>
 
-         /// <returns></returns>
 
-         private async Task HandleExceptionAsync(HttpContext context, Exception exception)
 
-         {
 
-             context.Response.ContentType = "application/json";  // 返回json 类型
 
-             var response = context.Response;
 
-             var errorResponse = new JsonView
 
-             {
 
-                 Code = StatusCodes.Status500InternalServerError,
 
-                 Data = ""
 
-             };  // 自定义的异常错误信息类型
 
-             switch (exception)
 
-             {
 
-                 case ApplicationException ex:
 
-                     if (ex.Message.Contains("Invalid token"))
 
-                     {
 
-                         response.StatusCode = StatusCodes.Status403Forbidden;
 
-                         errorResponse.Msg = ex.Message;
 
-                         break;
 
-                     }
 
-                     response.StatusCode = StatusCodes.Status400BadRequest;
 
-                     errorResponse.Msg = ex.Message;
 
-                     break;
 
-                 case KeyNotFoundException ex:
 
-                     response.StatusCode = StatusCodes.Status404NotFound;
 
-                     errorResponse.Msg = ex.Message;
 
-                     break;
 
-                 default:
 
-                     response.StatusCode = StatusCodes.Status500InternalServerError;
 
-                     errorResponse.Msg = exception.Message;
 
-                     break;
 
-             }
 
-             _logger.LogError(exception.Message);
 
-             var result = JsonConvert.SerializeObject(errorResponse);
 
-             await context.Response.WriteAsync(result);
 
-         }
 
-     }
 
- }
 
 
  |