私は、standart NinjectMVC3 BootstrapperをApp_Startフォルダにインストールして使用します。Ninjectとグローバルフィルタによる依存性注入:IAuthorizationFilter
マイアプリケーションクラスのようになります。私は唯一の入札ルールを以下している
public class MvcApplication : HttpApplication
{
static void RegisterRoutes(RouteCollection routes)
{
// ... routes here ...
}
public void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
// empty
}
}
はNinjectMVC3に登録さ:
Bind<IAccountsRepository>().To<AccountsRepository>();
this.BindFilter<GlobalAuthFilter>(FilterScope.Global, 0);
そして、私のグローバルフィルタ:すべてのコントローラが
public class GlobalAuthFilter : IAuthorizationFilter
{
readonly IAccountsRepository _accountsRepository;
public GlobalAuthFilter(IAccountsRepository accountsRepository)
{
_accountsRepository = accountsRepository;
}
public void OnAuthorization(AuthorizationContext context)
{
// Code here never reached. Why? What's wrong?
}
}
あります私のアプリケーションで。そして、すべてのコントローラが呼び出すすべてのアクションに対してOnAuthorizationを呼び出す必要があります。
しかし、私のコードdosn'tは動作します。ありがとう。
はい、私ナンプラーをこの方法でインポートRegisterServicesでバインディングルールをcedします。しかし、それは動作しません。 –
@JeanLouis、私はちょうどこのコードをテストし、それは完全に正常に機能しました。手順:1.新しいASP.NET MVC 3アプリケーションを作成します。 2. Ninject.MVC3 NuGetパッケージをインストールします。 3.「IAccountsRepository」、「AccountsRepository」、および「GlobalAuthFilter」タイプを定義します。 4.私の答えに示したコードをRegisterServicesメソッドに入れます。 5.アプリケーションを実行します。 6. OnAuthorizationが実行されます。 –
Ninjectモジュールの例を説明するために私の答えを更新しました。 –