|
@@ -1,4 +1,5 @@
|
|
|
-namespace OASystem.API.Middlewares
|
|
|
+
|
|
|
+namespace OASystem.API.Middlewares
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 全局异常捕获中间件
|
|
@@ -23,8 +24,9 @@
|
|
|
/// 执行中间件
|
|
|
/// </summary>
|
|
|
/// <param name="httpContext"></param>
|
|
|
+ /// <param name="db"></param>
|
|
|
/// <returns></returns>
|
|
|
- public async Task InvokeAsync(HttpContext httpContext)
|
|
|
+ public async Task InvokeAsync(HttpContext httpContext, ISqlSugarClient db)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
@@ -32,7 +34,7 @@
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
- await HandleExceptionAsync(httpContext, ex); // 捕获异常了 在HandleExceptionAsync中处理
|
|
|
+ await HandleExceptionAsync(httpContext, ex, db); // 捕获异常了 在HandleExceptionAsync中处理
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -41,16 +43,27 @@
|
|
|
/// </summary>
|
|
|
/// <param name="context"></param>
|
|
|
/// <param name="exception"></param>
|
|
|
+ /// <param name="db"></param>
|
|
|
/// <returns></returns>
|
|
|
- private async Task HandleExceptionAsync(HttpContext context, Exception exception)
|
|
|
+ private async Task HandleExceptionAsync(HttpContext context, Exception exception, ISqlSugarClient db)
|
|
|
{
|
|
|
+ //验证异常是否存在异常处理,存在则回滚事务
|
|
|
+ if (db != null && db.Ado.Transaction != null)
|
|
|
+ {
|
|
|
+ db.Ado.RollbackTran();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
context.Response.ContentType = "application/json"; // 返回json 类型
|
|
|
var response = context.Response;
|
|
|
var errorResponse = new JsonView
|
|
|
{
|
|
|
Code = StatusCodes.Status500InternalServerError,
|
|
|
Data = ""
|
|
|
- }; // 自定义的异常错误信息类型
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ // 自定义的异常错误信息类型
|
|
|
switch (exception)
|
|
|
{
|
|
|
case ApplicationException ex:
|