diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs index ddcfd61aeb..99c9ccb2d5 100644 --- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs +++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Options; using Volo.Abp.Auditing; using Volo.Abp.DependencyInjection; +using Volo.Abp.Uow; using Volo.Abp.Users; namespace Volo.Abp.AspNetCore.Auditing @@ -16,16 +17,19 @@ namespace Volo.Abp.AspNetCore.Auditing protected AbpAuditingOptions AuditingOptions { get; } protected AbpAspNetCoreAuditingOptions AspNetCoreAuditingOptions { get; } protected ICurrentUser CurrentUser { get; } + protected IUnitOfWorkManager UnitOfWorkManager { get; } public AbpAuditingMiddleware( IAuditingManager auditingManager, ICurrentUser currentUser, IOptions auditingOptions, - IOptions aspNetCoreAuditingOptions) + IOptions aspNetCoreAuditingOptions, + IUnitOfWorkManager unitOfWorkManager) { _auditingManager = auditingManager; CurrentUser = currentUser; + UnitOfWorkManager = unitOfWorkManager; AuditingOptions = auditingOptions.Value; AspNetCoreAuditingOptions = aspNetCoreAuditingOptions.Value; } @@ -44,7 +48,7 @@ namespace Volo.Abp.AspNetCore.Auditing try { await next(context); - + Debug.Assert(_auditingManager.Current != null); if (_auditingManager.Current.Log.Exceptions.Any()) { @@ -60,6 +64,11 @@ namespace Volo.Abp.AspNetCore.Auditing { if (ShouldWriteAuditLog(context, hasError)) { + if (UnitOfWorkManager.Current != null) + { + await UnitOfWorkManager.Current.SaveChangesAsync(); + } + await saveHandle.SaveAsync(); } }