问题描述
我正在使用 Audit.net 来审核所有 .net 核心 Web API 请求。我想使用全局操作过滤器来审核所有 HTTP 请求,但不想审核 HTTP GET 方法。在配置 AddAuditFilter 时,我可以使用 LogActionIf 过滤器有条件地记录操作,但无法设置条件来检查此操作是否与 Http Get 相关。知道如何添加条件过滤器吗?我指的是以下配置:
mvc.AddAuditFilter(config => config
.LogActionIf(d => d.ControllerName == "Orders" && d.ActionName != "Getorder")
.WithEventType("{verb}.{controller}.{action}")
.IncludeHeaders(ctx => !ctx.ModelState.IsValid)
.IncludeRequestBody()
.IncludeModelState()
.IncludeResponseBody(ctx => ctx.HttpContext.Response.StatusCode == 200));
解决方法
使用以 LogRequestIf
作为参数的 HttpRequest
怎么样:
mvc.AddAuditFilter(config => config
.LogRequestIf(r => r.Method != "GET") // <-- This
.WithEventType("{verb}.{controller}.{action}")
.IncludeHeaders(ctx => !ctx.ModelState.IsValid)
.IncludeRequestBody()
.IncludeModelState()
.IncludeResponseBody(ctx => ctx.HttpContext.Response.StatusCode == 200));