0

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")]
4

1 に答える 1