我正在为 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));
在先前版本的结构映射中,HttpContextScoped 可用,但在最新版本 3.0.0.0 中不再可用,因此我将 LifeCycle 设置为 HttpContextLifeCycle。
Linq to Sql Datacontext 对象正在处理,我收到以下错误:
无法访问已释放的对象。\r\n对象名称: 'DataContext 在 Dispose 后访问'
如果我使用Singleton
orThreadLocalStorageLifecycle
范围,Datacontext
它工作正常。但我想将DataContext
对象范围限定为 Per Http Request。
如何将Datacontext
对象范围限定为每个 Http 请求?
我参考了以下文章,但它不适用于HttpContextLifeCycle
:
http://ignipro.blogspot.in/2012/09/structuremap-scopes-and-life-cycles.html