我有2个基本控制器:
public class FirstBaseController : ApiController {}
public class SecondBaseController : ODataController {}
我还有一个用于调试目的的全局过滤器,我需要执行属性注入以传入log4net。
我尝试通过执行以下操作为两个控制器注册过滤器:
builder.RegisterType<DebugAttribute>()
.AsWebApiFilterFor<FirstBaseController>()
.AsWebApiFilterFor<SecondBaseController>()
.InstancePerRequest()
.PropertiesAutowired();
上面的代码编译但导致运行时错误。目前我只能为一个控制器注册一个过滤器:
builder.RegisterType<DebugAttribute>()
.AsWebApiFilterFor<FirstBaseController>()
.InstancePerRequest()
.PropertiesAutowired();
有没有办法为多个控制器注册一个过滤器,例如添加谓词,如:
.Where(t => t.Name.StartsWith("Base"))
答案 0 :(得分:0)
您可以为每个需要的控制器注册过滤器。
builder.RegisterType<DebugAttribute>()
.AsWebApiFilterFor<FirstBaseController>()
.InstancePerRequest();
builder.RegisterType<DebugAttribute>()
.AsWebApiFilterFor<SecondBaseController>()
.InstancePerRequest();
但我认为有更好的方法。
答案 1 :(得分:0)
我有同样的问题,我在AutoFac Github页面上发现此问题被定义为错误。我们无法同时为多个控制器注册过滤器。 此错误仍然存在(2017年2月)。
@Rroman给出了解决方案: 实际上,您必须使用多个声明语句为每个控制器注册过滤器。