Browse Source

Merge pull request #11687 from abpframework/maliming/audit

Handle possible exceptions in SaveChangesAsync method.
pull/11689/head
liangshiwei 5 years ago
committed by GitHub
parent
commit
f507c0970f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 12
      framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/Auditing/AbpAuditHubFilter.cs
  2. 12
      framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs
  3. 22
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingInterceptor.cs

12
framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/Auditing/AbpAuditHubFilter.cs

@ -55,7 +55,17 @@ public class AbpAuditHubFilter : IHubFilter
var unitOfWorkManager = invocationContext.ServiceProvider.GetRequiredService<IUnitOfWorkManager>(); var unitOfWorkManager = invocationContext.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
if (unitOfWorkManager.Current != null) if (unitOfWorkManager.Current != null)
{ {
await unitOfWorkManager.Current.SaveChangesAsync(); try
{
await unitOfWorkManager.Current.SaveChangesAsync();
}
catch (Exception ex)
{
if (!auditingManager.Current.Log.Exceptions.Contains(ex))
{
auditingManager.Current.Log.Exceptions.Add(ex);
}
}
} }
await saveHandle.SaveAsync(); await saveHandle.SaveAsync();

12
framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs

@ -73,7 +73,17 @@ public class AbpAuditingMiddleware : IMiddleware, ITransientDependency
{ {
if (UnitOfWorkManager.Current != null) if (UnitOfWorkManager.Current != null)
{ {
await UnitOfWorkManager.Current.SaveChangesAsync(); try
{
await UnitOfWorkManager.Current.SaveChangesAsync();
}
catch (Exception ex)
{
if (!_auditingManager.Current.Log.Exceptions.Contains(ex))
{
_auditingManager.Current.Log.Exceptions.Add(ex);
}
}
} }
await saveHandle.SaveAsync(); await saveHandle.SaveAsync();

22
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingInterceptor.cs

@ -7,6 +7,7 @@ using Microsoft.Extensions.Options;
using Volo.Abp.Aspects; using Volo.Abp.Aspects;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.DynamicProxy; using Volo.Abp.DynamicProxy;
using Volo.Abp.Uow;
using Volo.Abp.Users; using Volo.Abp.Users;
namespace Volo.Abp.Auditing; namespace Volo.Abp.Auditing;
@ -41,7 +42,8 @@ public class AuditingInterceptor : AbpInterceptor, ITransientDependency
else else
{ {
var currentUser = serviceScope.ServiceProvider.GetRequiredService<ICurrentUser>(); var currentUser = serviceScope.ServiceProvider.GetRequiredService<ICurrentUser>();
await ProcessWithNewAuditingScopeAsync(invocation, auditingOptions, currentUser, auditingManager, auditingHelper); var unitOfWorkManager = serviceScope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
await ProcessWithNewAuditingScopeAsync(invocation, auditingOptions, currentUser, auditingManager, auditingHelper, unitOfWorkManager);
} }
} }
} }
@ -105,7 +107,8 @@ public class AuditingInterceptor : AbpInterceptor, ITransientDependency
AbpAuditingOptions options, AbpAuditingOptions options,
ICurrentUser currentUser, ICurrentUser currentUser,
IAuditingManager auditingManager, IAuditingManager auditingManager,
IAuditingHelper auditingHelper) IAuditingHelper auditingHelper,
IUnitOfWorkManager unitOfWorkManager)
{ {
var hasError = false; var hasError = false;
using (var saveHandle = auditingManager.BeginScope()) using (var saveHandle = auditingManager.BeginScope())
@ -129,6 +132,21 @@ public class AuditingInterceptor : AbpInterceptor, ITransientDependency
{ {
if (ShouldWriteAuditLog(invocation, options, currentUser, hasError)) if (ShouldWriteAuditLog(invocation, options, currentUser, hasError))
{ {
if (unitOfWorkManager.Current != null)
{
try
{
await unitOfWorkManager.Current.SaveChangesAsync();
}
catch (Exception ex)
{
if (!auditingManager.Current.Log.Exceptions.Contains(ex))
{
auditingManager.Current.Log.Exceptions.Add(ex);
}
}
}
await saveHandle.SaveAsync(); await saveHandle.SaveAsync();
} }
} }

Loading…
Cancel
Save