/// <inheritdoc /> public override void OnResultExecuted(ResultExecutedContext context) { IServiceProvider provider = context.HttpContext.RequestServices; ScopedDictionary dict = provider.GetService <ScopedDictionary>(); if (dict.AuditOperation?.FunctionName == null) { return; } dict.AuditOperation.EndedTime = DateTime.Now; IUnitOfWork unitOfWork = provider.GetUnitOfWork <Function, Guid>(); //回滚之前业务处理中的未提交事务,防止审计信息保存时误提交 unitOfWork?.Rollback(); IAuditStore store = provider.GetService <IAuditStore>(); store?.Save(dict.AuditOperation); unitOfWork?.Commit(); }
/// <inheritdoc /> public override void OnResultExecuted(ResultExecutedContext context) { IServiceProvider provider = context.HttpContext.RequestServices; ScopedDictionary dict = provider.GetRequiredService <ScopedDictionary>(); if (dict.AuditOperation?.FunctionName == null) { return; } dict.AuditOperation.EndedTime = DateTime.Now; IUnitOfWork unitOfWork = provider.GetService <IUnitOfWork>(); unitOfWork?.Dispose(); //移除当前功能,使保存审计信息的时候不再获取记录变更,审计信息不需要再审计 dict.Function = null; provider.BeginUnitOfWorkTransaction(scopeProvider => { IAuditStore store = scopeProvider.GetService <IAuditStore>(); store?.Save(dict.AuditOperation); }); }