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 用であると言われています) を使用する必要がありますか?
これを機能させるために他にできることはありますか?