我发现了一些关于此问题的问题,但他们倾向于指向我正在遵循的确切文档...但它仍然不起作用。Autofac属性注入属性失败
我正在构建一个相当简单的ASP.NET MVC 4站点,并且计划是使用基于ActionFilterAttribute
的日志记录。我有一个DataAccessProvider
类,它打开与数据库的事务并提供工作单元实例,我试图将其注入到filter属性中。
documentation表示只需拨打RegisterFilterProvider()
即可,并确保相关类型已注册。它具体说,没有必要注册该属性,但我已经试过和没有。我的代码目前看起来是这样的:
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.Register(x => new EntityAccessProvider())
.As<IDataAccessProvider>()
.InstancePerHttpRequest();
builder.RegisterType<DebugLogAttribute>().PropertiesAutowired();
//^I've tried it with and without this line
builder.RegisterFilterProvider();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
在文档的例子然后就放置在过滤器的属性,所以我做了相同的:
public class DebugLogAttribute : ActionFilterAttribute
{
private IDataAccessProvider DataAccess { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext) { ... }
public override void OnActionExecuted(ActionExecutedContext filterContext) { ... }
}
文档说这一切是需要 - 甚至没有建设者注入;它是通过注资完成的。但是,当我运行此代码时,DataAccess
属性始终为null
; Autofac似乎忽略了它。我知道注册工作正常,因为它正确地将EntityAccessProvider
注入到我的控制器中,但它不适用于属性。我错过了什么?
糟糕...完全错过了。谢谢! – anaximander
谢谢你的解决方案:) – Redplane