
做网站多少钱 注意什么,厦门建设工程招标中心的网站,腾讯云域名续费,北美跨境电商平台有哪些一、自定义using WebApi.Result;namespace WebApi.Exceptions
{public class ApiException : Exception{public ResultCodeEnum ErrorCodeEnum { get; }public ApiException(ResultCodeEnum resultCodeEnum) : base((r…
一、自定义using WebApi.Result;namespace WebApi.Exceptions
{public class ApiException : Exception{public ResultCodeEnum ErrorCodeEnum { get; }public ApiException(ResultCodeEnum resultCodeEnum) : base((resultCodeEnum.Message)){ErrorCodeEnum = resultCodeEnum;}}
}二、中间件using System.Net;
using System.Text.Json;
using WebApi.Exceptions;
using WebApi.Result;namespace WebApi.Middlewares
{public class GlobalExceptionMiddleware{private readonly RequestDelegate _next;private readonly ILoggerGlobalExceptionMiddleware _logger;public GlobalExceptionMiddleware(RequestDelegate next, ILoggerGlobalExceptionMiddleware logger){_next = next;_logger = logger;}public async Task InvokeAsync(HttpContext context){try{await _next(context);}catch (Exception ex){await HandleExceptionAsync(context, ex);}}private async Task HandleExceptionAsync(HttpContext context, Exception exception){context.Response.ContentType = "application/json";context.Response.StatusCode = (int)HttpStatusCode.OK; ApiResult result;// 判断 自己的if (exception is ApiException apiEx){result = ApiResult.Fail(apiEx.ErrorCodeEnum);_logger.LogWarning($"异常拦截:{apiEx.ErrorCodeEnum.Message}");}else{// 其它的result = ApiResult.Fail(ResultCodeEnum.ServiceError.Code, $"系统发生未知错误: {exception.Message}");_logger.LogError(exception, "系统崩溃拦截");}// json字符串var json = JsonSerializer.Serialize(result, new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase });await context.Response.WriteAsync(json);}}
}三、添配置(Program.cs)var app = builder.Build();#region 中间件
app.UseMiddlewareGlobalExceptionMiddleware();
#endregion