【问题标题】:Filter Requests based on Response Status Code Audit.Net根据响应状态代码 Audit.Net 过滤请求
【发布时间】:2021-06-30 07:06:08
【问题描述】:

我想根据 ResponseCode 过滤请求,即不应使用 Audit.Net 记录具有 500、400、401 等响应状态代码的请求。 我使用了 AuditMiddleware,但它没有过滤 500、400 和 401 请求响应。

代码:

 app.UseAuditMiddleware(_ => _
                .FilterByRequest(r => !r.Path.Value.EndsWith("favicon.ico") && r.HttpContext.Response.StatusCode==StatusCodes.Status200OK)
                .IncludeHeaders()
                .IncludeRequestBody()
                .IncludeResponseBody()
                .WithEventType("HTTP:{verb}:{url}"));

然后我在 StartUp.cs 的 ConfigureApp 方法中调用它,但它没有过滤。

【问题讨论】:

    标签: asp.net-web-api asp.net-core-3.1 audit.net


    【解决方案1】:

    FilterByRequest() 用作在操作执行之前调用的预过滤器,因此您不会在过滤器委托上获得响应。

    根据响应丢弃事件的选项是通过custom action 进行后过滤,例如在您的启动时:

    using Audit.WebApi;
    
    Audit.Core.Configuration.AddCustomAction(ActionType.OnEventSaving, scope =>
    {
        var ev = scope.GetWebApiAuditAction();
        if (ev?.ResponseStatusCode == 500 || ev?.ResponseStatusCode == 400)
        {
            scope.Discard();
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2022-06-18
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-25
      • 2015-05-28
      • 2019-04-29
      相关资源
      最近更新 更多