依存性注入を管理するために、Web API 2 プロジェクトの StructureMap.WebApi2 nuget パッケージを使用しています。DefaultRegistry.cs クラスでは、必要なすべての依存関係について説明しました。ネストされたコンテナーは、各要求に使用されます。
For<IScoreRepository>().Use<ScoreRepository>();
For<IExternalUsersAuditRepository>().Use<ExternalUsersAuditRepository>();
For<ITestScanService>().Use<TestScanService>();
// hook up specific questionnaire datacontext
For<SportsDataContext>().LifecycleIs(new HttpContextLifecycle())
.Use(c => new SportsDataContext(
ConfigurationManager.ConnectionStrings["Database"].ConnectionString));
// hook up datacontext for data and services
For<QuestionDataContext>().LifecycleIs(new HttpContextLifecycle())
.Use(c => new QuestionDataContext(
ConfigurationManager.ConnectionStrings["Database"].ConnectionString));
以前のバージョンの structuremap HttpContextScoped では利用できましたが、最新バージョン 3.0.0.0 では利用できなくなったため、LifeCycle を HttpContextLifeCycle としてセットアップしました。
Linq to Sql Datacontext オブジェクトが破棄され、次のエラーが発生します。
破棄されたオブジェクトにアクセスできません。\r\nオブジェクト名: 'DataContext は Dispose 後にアクセスされました'
を使用Singleton
またはThreadLocalStorageLifecycle
スコープすると、正常に機能しDatacontext
ます。DataContext
しかし、オブジェクトを Per Http Requestにスコープしたいと考えています。
Datacontext
Http リクエストごとにオブジェクトのスコープを設定するにはどうすればよいですか?
以下の記事を参考にしましたが、動作しませんHttpContextLifeCycle
。
http://ignipro.blogspot.in/2012/09/structuremap-scopes-and-life-cycles.html