我试图确定是否有一种方法可以删除默认情况下ASP.NET Boilerplate代码中提供的审核日志记录。
查看文档,似乎可以使用以下 从“审核”配置中删除选择器,但不能。
Configuration.Auditing.Selectors.Clear()
原因是,例如,如果要保留审核功能,而只想审核某些服务,而不是所有IApplicationService
类型的服务。
我试图将以上代码放入各种模块中,但都没有成功。所有服务呼叫都记录在AbpAuditLogs
表中。
答案 0 :(得分:2)
ASP.NET Boilerplate提供了用于创建应用程序服务的基础结构。
CreateControllersForAppServices 方法获取程序集,并将所有应用程序服务转换为该程序集中的MVC控制器。
ABP为ASP.NET Core定义了一些预先构建的过滤器。默认情况下,所有这些都添加到所有控制器的所有操作中。
— https://aspnetboilerplate.com/Pages/Documents/AspNet-Core
Configuration.Auditing.Selectors.Clear()
处理AuditingInterceptor
而不是操作过滤器。
AbpAuditActionFilter
将defaultValue
作为true
传递到_auditingHelper.ShouldSaveAudit(...)
。
AuditingHelper
最终返回了defaultValue
。
我们无法轻松替换AbpAuditActionFilter
,但是我们可以替换AuditingHelper
:
复制AuditingHelper
并将其重命名为IgnoreDefaultAuditingHelper
。
修改AuditingHelper.ShouldSaveAudit
的最后一行以忽略defaultValue
:
public bool ShouldSaveAudit(MethodInfo methodInfo, bool defaultValue = false)
{
// ...
return false;
// return defaultValue;
}
在模块的IAuditingHelper
方法中替换PreInitialize
:
public override void PreInitialize()
{
Configuration.ReplaceService<IAuditingHelper, IgnoreDefaultAuditingHelper>();
}