gpt4 book ai didi

c# - ActionFilterAttribute : When to use OnActionExecuting vs. OnActionExecutingAsync?

转载 作者:太空狗 更新时间:2023-10-29 17:39:02 33 4
gpt4 key购买 nike

我创建了一个继承自 System.Web.Http.Filters.ActionFilterAttributeLoggedAttribute 类,并将日志记录放入 OnActionExecuting OnActionExecutingAsync 方法;我原以为一个将用于异步调用,一个将用于非异步调用,但似乎两者都被使用了。那么我应该登录哪一个呢?

更新

代码如下:

public sealed class LoggedAttribute : ActionFilterAttribute
{
private readonly ILog _logger;

public LoggedAttribute(ILogManager logManager)
{
_logger = logManager.GetLogger<LoggedAttribute>();
}

public LoggedAttribute() : this(new LogManager()) {}

public override void OnActionExecuting(HttpActionContext actionContext)
{
//logging logic goes here
base.OnActionExecuting(actionContext);
}

public override async Task OnActionExecutingAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
{
//logging logic goes here
await base.OnActionExecutingAsync(actionContext, cancellationToken);
}
}

然后我将 [Logged] 属性应用到我的基本 ApiController,我得到了单个调用的重复日志条目。

最佳答案

回复没有回答我想的问题,

如果您需要在执行操作之前运行代码,则两者都会用到。

如果您希望它也SYNCHRONOUSLY运行,请使用OnActionExecuting,否则使用OnActionExecutingAsync(即异步)。

关于c# - ActionFilterAttribute : When to use OnActionExecuting vs. OnActionExecutingAsync?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35024876/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com