MVC 4 プロジェクトと Ninject 3 がすべて接続されています。
ここで、MVC コントローラー メソッドで傍受を処理したいと考えています。
これを追加すると:
kernel.Bind<TT.Controllers.HomeController>().ToSelf().Intercept().With<TT.Interceptors.LoggingInterceptor>();
それはちょっとうまくいきます(私自身のメソッドはインターセプトされませんが、代わりに、ベースコントローラークラスのBeginExecute、EndExecute、およびDisposeメソッドがインターセプトされます)。しかし、今のところは大丈夫だとしましょう。
次のように HomeController で特定のメソッドを傍受したい場合:
kernel.InterceptAround<TT.Controllers.HomeController>(
c => c.Index(),
invocation => doSomethingOnEnter(invocation),
invocation => doSomethingOnExit(invocation)
);
それは単に機能しません。インターセプトが発生することはありません。
一方、プロジェクトのプレーンなサービス クラスで同じメソッド インターセプトを使用すると、機能します。インターセプトに問題があるのは Controller メソッドだけのようです。
kernel.InterceptAround<UrlService>(
c => c.DoSomething(),
invocation => doSomethingOnEnter(invocation),
invocation => doSomethingOnExit(invocation)
);
^これは機能します。
誰が私が何をすべきかについて何か考えがありますか?
PS。私は WebActivators で NinjectWebCommon を使用しています:
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(TT.NinjectWebCommon), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(TT.NinjectWebCommon), "Stop")]