我正在使用带有 MVC4 的 Autofac 的 Nuget MVC3 集成包。它主要工作(使用控制器的构造函数注入效果很好)但它不会将注册的服务注入到动作过滤器属性中。
这是我在 Global.asax.cs 中的注册:
builder.RegisterType<AspNetMembershipProviderWrapper>().As(typeof(IUserService)).InstancePerHttpRequest();
// 5) action filters
builder.RegisterType<SetCultureAttribute>().As<IActionFilter>().PropertiesAutowired().SingleInstance();
builder.RegisterFilterProvider();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
然后在SetCultureAttribute
我有这个:
public IUserService _userService { get; set; } // it doesn't get injected, null
这在属性的构造函数中也不起作用:
_userService = DependencyResolver.Current.GetService<AspNetMembershipProviderWrapper>(); // always returns null
DependencyResolver.Current.GetService()
在操作过滤器的构造函数中调用时,所有其他注册服务也返回 null(我在调试窗口中对其进行了测试以对其进行测试)。
所以我猜有些事情不正常。可以使用 MVC3 集成还是应该使用 MVC4 Nuget 包(它说它是用于 RC)?
还有什么我可以尝试做的吗?