3

ServiceStack で Ninject を使用する場合、必要に応じて IDisposable.Dispose メソッドを呼び出して、オブジェクトの有効期間をリクエストごとに指定するにはどうすればよいですか?

ドキュメントによると、これを行うデフォルトの方法は次のとおりです。

container.RegisterAutoWiredAs<MyType,IMyType>().ReusedWithin(ReuseScope.Request); 

ただし、NinjectContainerAdapterプロジェクトには を使用する必要があります。通常、私はインストールNinject.Web.Commonして書きます:

kernel.Bind<IMyType>().To<MyType>().InRequestScope()

私のインスタンスはリクエストの最後に破棄されます。たとえば、自己ホスト型のシナリオで、ServiceStack でこれを行うにはどうすればよいでしょうか?

4

1 に答える 1

3

INinjectHttpApplicationPluginfor ServiceStackを実装する必要があります。メソッドobject GetRequestScope(IContext context);では、リクエストの有効期間を持つオブジェクトを返さなければなりません () に相当しHttpContext.Currentます) 。

おそらく、オブジェクトを追加して、そのオブジェクトをHostContextスコープとして返​​すことができます。INotifyWhenDisposedオブジェクトがガベージ コレクションされるのを待つのではなく、リクエストの直後にオブジェクトが解放されるように、そのオブジェクトを実装してリクエストの最後に破棄することをお勧めします。

于 2013-01-30T12:01:16.347 に答える