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

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.UseExceptionHandlerMiddle();
app.UseIpLimitMiddle();
app.UseRequestResponseLogMiddle();
app.UseRecordAccessLogsMiddle();

View File

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