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)仍然显示旧风格的代码,并没有更新。
如果有人知道新的风格可以告诉我如何将旧代码更改为新的,我将衷心感激。
谢谢
你应该重构你的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);
}