autofac nuget update changes IAutofacActionFilter implementa

本文关键字:IAutofacActionFilter implementa changes update nuget autofac | 更新日期: 2023-09-27 18:07:33

我有一个asp.net web api2项目,我需要在响应头中添加某些P3P值,并使用ActionFilterAttribute实现。

在我的开发环境中,我尝试实现Autofac 3.5.2及其web api集成模块3.4。

文档提到使用IAutofacActionFilter实现,我尝试使用它们。

代码如下…

public void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
    if (actionExecutedContext.Response != null)
        actionExecutedContext.Response.Headers.Add("P3P", 
            "CP='''"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'''"");
}
public void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
{    
}

和我的Dependencies。config I add .

builder.Register(c => new myActionFilter())
    .AsWebApiActionFilterFor<DefaultController>(c => c.myaction(default(myclass)))
    .InstancePerRequest();

因为myaction是async.., c.myaction(default(myclass))抛出警告"因为这个调用没有等待,当前方法的执行在调用完成之前继续。考虑对调用的结果应用'await'操作符。

应用程序似乎工作,但由于我无法摆脱警告,我决定不实现autoface在那个时间点。

最近,我们得到了在项目中使用Autofac的命令,今天当我打开应用程序并更新nuget包时,我发现Autofac已经更新到4.1.0版本,web api集成模块已经更新到4.0.0。

现在从Autofac 4.0.0开始,Autofac过滤器接口现在使用基于任务/异步的方法签名而不是同步签名。

不幸的是Autofac文档(http://docs.autofac.org/en/latest/integration/webapi.html)仍然显示旧风格的代码,并没有更新。

如果有人知道新的风格可以告诉我如何将旧代码更改为新的,我将衷心感激。

谢谢

autofac nuget update changes IAutofacActionFilter implementa

你应该重构你的myActionFilter类如下:

public Task OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext, 
    CancellationToken cancellationToken)
{
    if (actionExecutedContext.Response != null)
        actionExecutedContext.Response.Headers.Add("P3P",
            "CP='''"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'''"");
    return Task.FromResult(0);
}
public Task OnActionExecutingAsync(HttpActionContext actionContext,
    CancellationToken cancellationToken)
{
    return Task.FromResult(0);
}
相关文章:
  • 没有找到相关文章