utils/Middlewares/ExceptionHandlingMiddleware.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Net;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using utils.EX;
namespace Common.Middlewares
{
/// <summary>
/// 全局异常处理类
/// </summary>
public class ExceptionHandlingMiddleware
{
private readonly RequestDelegate _next; // 用来处理上下文请求
private readonly ILogger<ExceptionHandlingMiddleware> _logger;
public ExceptionHandlingMiddleware(RequestDelegate next, ILogger<ExceptionHandlingMiddleware> logger)
{
_next = next;
_logger = logger;
}
public async Task InvokeAsync(HttpContext httpContext)
{
try
{
await _next(httpContext); //要么在中间件中处理,要么被传递到下一个中间件中去
}
catch (Exception ex)
{
await HandleExceptionAsync(httpContext, ex); // 捕获异常了 在HandleExceptionAsync中处理
}
}
private async Task HandleExceptionAsync(HttpContext context, Exception exception)
{
context.Response.ContentType = "application/json"; // 返回json 类型
var response = context.Response;
var errorResponse = new ErrorResponse
{
Success = false
}; // 自定义的异常错误信息类型
switch (exception)
{
case ApplicationException ex:
if (ex.Message.Contains("Invalid token"))
{
response.StatusCode = (int)HttpStatusCode.Forbidden;
errorResponse.Message = ex.Message;
break;
}
response.StatusCode = (int)HttpStatusCode.BadRequest;
errorResponse.Message = ex.Message;
break;
case KeyNotFoundException ex:
response.StatusCode = (int)HttpStatusCode.NotFound;
errorResponse.Message = ex.Message;
后面还有 13 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。