asp.net – 当使用HttpContextScoped()时,StructureMap不会处理数据上下文
|
我的目标是在ASP.NET MVC中根据HTTP请求拥有一个数据上下文(MainDbContext),并在请求结束时处理数据上下文. 我使用以下StructureMap配置: public static class ContainerConfigurer
{
public static void Configure()
{
ObjectFactory.Initialize(x =>
{
x.For<MainDbContext>().HttpContextScoped();
});
}
}
每当我需要一个MainDbContext,我使用这个代码: var dbContext = ObjectFactory.GetInstance<MainDbContext>(); 这是按预期的方式工作:每个HTTP请求只创建一个数据上下文.问题是,MainDbContext在请求结束时没有被处理. 当HTTP请求完成时,如何配置我的ObjectFactory来处理数据上下文?或者这只是我需要在Global.asax中手动使用Application_EndRequest(). 更新 我刚刚尝试将以下代码添加到Global.asax中: protected virtual void Application_EndRequest()
{
ObjectFactory.GetInstance<MainDbContext>().Dispose();
}
正如预期的那样,这解决了这个问题.我仍然在想,是否有任何方法可以使用StructureMap自动执行. 解决方法代替:x.For<MainDbContext>().HttpContextScoped(); 尝试: x.For<MainDbContext>().HttpContextScoped().Use(() => new MainDbContext()); 通常也是需要数据库上下文的存储库类.所以代替ObjectFactory.GetInstance< MainDbContext>();让您的存储库采用一些接口db上下文,并配置StructureMap将MainDbContext注入它们.然后使StructureMap将存储库注入控制器,… 在Application_EndRequest中: protected void Application_EndRequest()
{
ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects();
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – Ninject程序集与引用的程序集不匹配
- 如何在ASP.NET中阻止IP地址或IP类
- asp.net-mvc – 无法更改关系,因为一个或多个外键属性在MVC
- asp.net-mvc – ASP.net MVC – 我可以告诉Html.Partial在哪
- asp.net-mvc – 获取错误“视图at’/ Views / Page / home.
- 怎样恢复能在asp.net中使用c#下载文件 – 最好的方法(对于大
- asp.net – 休闲网站的密码规则
- asp.net-mvc – 如何从HttpContext访问ViewData? (ASP.Net
- asp.net-mvc – ASP.NET MVC UpdateModel容易受到黑客攻击?
- asp.net-mvc-3 – 在MVC应用程序中将配置设置注入Javascrip
