🎨 启用异常处理中间件,统一拦截异常

This commit is contained in:
LemonNoCry 2023-06-13 17:29:41 +08:00
parent a338c56e7a
commit 45116fe5af
No known key found for this signature in database
2 changed files with 12 additions and 8 deletions

View File

@ -144,6 +144,7 @@ else
//app.UseHsts(); //app.UseHsts();
} }
app.UseExceptionHandlerMiddle();
app.UseIpLimitMiddle(); app.UseIpLimitMiddle();
app.UseRequestResponseLogMiddle(); app.UseRequestResponseLogMiddle();
app.UseRecordAccessLogsMiddle(); app.UseRecordAccessLogsMiddle();

View File

@ -26,7 +26,6 @@ namespace Blog.Core.Extensions.Middlewares
catch (Exception ex) catch (Exception ex)
{ {
await HandleExceptionAsync(context, ex); await HandleExceptionAsync(context, ex);
throw;
} }
} }
@ -34,22 +33,26 @@ namespace Blog.Core.Extensions.Middlewares
{ {
if (e == null) return; if (e == null) return;
Log.Error(e.GetBaseException().ToString());
await WriteExceptionAsync(context, e).ConfigureAwait(false); await WriteExceptionAsync(context, e).ConfigureAwait(false);
} }
private static async Task WriteExceptionAsync(HttpContext context, Exception e) private static async Task WriteExceptionAsync(HttpContext context, Exception e)
{ {
if (e is UnauthorizedAccessException) var message = e.Message;
context.Response.StatusCode = (int) HttpStatusCode.Unauthorized; switch (e)
else if (e is Exception) {
context.Response.StatusCode = (int) HttpStatusCode.BadRequest; case UnauthorizedAccessException:
context.Response.StatusCode = (int) HttpStatusCode.Unauthorized;
break;
default:
context.Response.StatusCode = (int) HttpStatusCode.BadRequest;
break;
}
context.Response.ContentType = "application/json"; context.Response.ContentType = "application/json";
await context.Response await context.Response
.WriteAsync(JsonConvert.SerializeObject(new ApiResponse(StatusCode.CODE500, e.Message).MessageModel)) .WriteAsync(JsonConvert.SerializeObject(new ApiResponse(StatusCode.CODE500, message).MessageModel))
.ConfigureAwait(false); .ConfigureAwait(false);
} }
} }