2017-04-10 19 views
0

NinjectでセットアップをSimpleInjectorに移行したいと思います。 ASP.NET MVCアプリケーション - - ASP.NETのWeb APIアプリケーションMVC、Web APIとOWINのシンプルなインジェクタスコープを組み合わせる

このライブラリには、次の

のようないくつかの宣言を特徴NinjectModule実装を持っている私は から参照されているカスタムライブラリを持っている瞬間に
Bind<MyDataContext>().To<MyDataContext>().InRequestScope(); 

私の質問は、InRequestScope()の生涯に関連しています。私がSimpleInjectorのドキュメントを読むと、ASP.NET MVC applicationWebRequestLifestyleDefaultScopedLifestyleオプションとして使用することが推奨されていますが、Web APIにはAsyncScopedLifestyleが推奨されています。また

アプリの両方で、私の場合ですOwinを使用して、ドキュメントが私の理解のために

app.Use(async (context, next) => { 
    using (AsyncScopedLifestyle.BeginScope(container)) { 
     await next(); 
    } 
}); 

のように、ブロック内のすべてをラップするために提案し、この意味:

  1. ごとに登録すべきですLifestyle.Scopedライフスタイルに登録する
  2. 両方のアプリケーションで、スコープ付きのインスタンスをapp.Use(...)コードブロック
  3. で解決できるようにする必要があります

これは間違いありませんか?

答えて

1

すべての登録が

正しいLifestyle.Scopedのライフスタイルに登録する必要があります。

両方のアプリケーションは、スコープ付きインスタンスがapp.Use(...)AsyncScopedLifestyleapp.Use(...)コードブロックがすべての要求に適用されるコードブロック

、この手段によって解決されることを可能にするべきですそのMVCコードは非同期スコープ内でも実行できます。つまり、WebApiRequestLifestyleは不要で、MVCアプリケーションにはAsyncScopedLifestyleを使用することもできます。

+0

ありがとうSteven! – Lorenzo

関連する問題