C# 在ASP.NET样板文件中为应用程序服务配置审核日志记录

C# 在ASP.NET样板文件中为应用程序服务配置审核日志记录,c#,asp.net-core,configuration,aspnetboilerplate,audit-logging,C#,Asp.net Core,Configuration,Aspnetboilerplate,Audit Logging,我试图确定是否有办法删除ASP.NET样板代码中默认提供的审核日志记录 查看文档,从审核配置中删除选择器应该可以工作,但实际上不行 Configuration.Auditing.Selectors.Clear() 原因是,比方说,如果我想让审计保持启用状态,但只想审计某些服务,而不是审计类型为iaapplicationservice的所有服务 我曾尝试将上述内容放在各个模块中,但都没有成功。所有服务呼叫都记录在AbpAuditLogs表中。Background ASP.NET样板文件提供了创建

我试图确定是否有办法删除ASP.NET样板代码中默认提供的审核日志记录

查看文档,从审核配置中删除选择器应该可以工作,但实际上不行

Configuration.Auditing.Selectors.Clear()
原因是,比方说,如果我想让审计保持启用状态,但只想审计某些服务,而不是审计类型为
iaapplicationservice
的所有服务

我曾尝试将上述内容放在各个模块中,但都没有成功。所有服务呼叫都记录在
AbpAuditLogs
表中。

Background ASP.NET样板文件提供了创建应用程序服务的基础结构

CreateControllersForAppServices方法获取一个程序集,并将所有应用程序服务转换为该程序集中的MVC控制器

ABP为ASP.NET核心定义了一些预构建的过滤器。默认情况下,它们都添加到所有控制器的所有操作中

-

问题
Configuration.Auditing.Selectors.Clear()
为操作过滤器而不是操作过滤器处理它

defaultValue
作为
true
传递给
\u auditingHelper。应保存审核(…)

defaultValue
最终由返回

变通办法 我们无法轻松替换
AbpAuditActionFilter
,但我们可以替换
AuditingHelper

  • 复制
    AuditingHelper
    并将其重命名为
    IgnoreDefaultAuditingHelper

  • 修改
    AuditingHelper.ShouldSaveAudit的最后一行以忽略
    defaultValue

    public bool ShouldSaveAudit(MethodInfo MethodInfo,bool defaultValue=false)
    {
    // ...
    返回false;
    //返回默认值;
    }
    
  • 在模块的
    预初始化
    方法中替换
    IAuditingHelper

    public override void PreInitialize()
    {
    ReplaceService();
    }
    

  • 在哪个方法中调用
    Clear
    ?在
    {APPNAME}CoreModule.cs
    文件中的
    PreInitialize
    方法中调用
    Clear