asp.net-mvc-3 – ASP.NET MVC 3,RavenDB和Autofac Issue Plus 2
注意:这里有3个问题,我没有单独提出问题,因为它们都与相同的代码有些相关.
我有以下代码,根据应用程序的生命周期,在Application_Start中注册与RavenDB的连接: var store = new DocumentStore { Url = "http://localhost:8080" }; store.Initialize(); builder.RegisterInstance(store).SingleInstance(); 现在这个工作正常,这应该是每个应用程序的生命周期只能创建一次.现在我想将DocumentSession添加到Autofac中,所以我尝试在Application_Start中添加: var session = store.OpenSession(); builder.RegisterInstance(session).SingleInstance(); 在我的UserRepository中,我有以下构造函数: public UserRepository(DocumentStore store,DocumentSession session) 当我尝试运行它时,我得到以下运行时错误: 无法解析构造函数’Void .ctor(Raven.Client.Document.DocumentStore,Raven.Client.Document.DocumentSession)’的参数’Raven.Client.Document.DocumentSession Session’ 对我来说这个错误听起来像Autofac并不认为它有一个DocumentSession但是store.OpenSession()返回它应该如此.有人知道会导致这个错误吗?我没有正确设置会话变量(它与存储变量工作正常)? 与上述问题有关或可能没有关系的另一件事是如何根据请求而不是按应用程序生命周期向Autofac添加对象实例?虽然RavenDB DocumentStore对象只应在生命??应用程序周期中创建一次,但应根据请求创建一次DocumentSession(可能每个应用程序级别创建它会导致上述错误). 关于Autofac(与上面的代码有点相关)的??最后一个问题是关于释放对象.如果您看一下本教程: http://codeofrob.com/archive/2010/09/29/ravendb-image-gallery-project-iii-the-application-lifecycle.aspx 最后一段代码: ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects(); 这段代码的目的是防止会话泄露.现在这是我还需要担心的Autofac,如果是这样,我将如何在Autofac中执行此操作? 解决方法
我猜你想要的东西:
builder.Register(c => c.Resolve<DocumentStore>().OpenSession()).InstancePerLifetimeScope(); “默认的ASP.NET和WCF集成已设置,以便InstancePerLifetimeScope()将组件附加到当前Web请求或服务方法调用.” – Autofac: InstanceScope 基本上,在Web应用程序中,InstancePerLifetimeScope处理每个HTTP上下文方面的一个,并且还处理实现IDisposable的任何类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 带有ASP.NET MVC的通配符MapPageRoute支持组
- asp.net-mvc – 高级ASP路由教程和示例
- asp.net – GridView分页 – 第一,最后,下一个,上一个
- asp.net – 不允许从数据类型sql_variant到uniqueidentifie
- 使用经典ASP上传图像
- ASP.NET 获取area_controller_Action_Parameters
- asp.net – ASP反请求伪造,为什么黑客不会先获取?
- 深蓝词库转换1.9发布——支持英库拼音、搜狗bin格
- asp.net – Gridview行编辑 – 动态绑定到DropDownList
- .net – TransactionScope:它变得更好了吗?
- ASP.NET MVC自定义授权
- asp.net – 为什么我的函数在加载UpdatePanel后运
- asp.net Mvc4 使用ajax结合分页插件实现无刷新分
- asp.net-mvc-3 – 如何从ASP.NET MVC#输出中删除
- asp.net – 401客户端’协商’,服务器’协商,NTL
- asp.net – 当要复制的lob数据的插入长度超过配置
- ASP.Net MVC,使用javascript提交表单
- asp.net-mvc-4 – 发布后保留表单值(不是模型的一
- asp.net-mvc-3 – 在剃刀视图中使用泛型方法
- asp.net-core – 什么是aspnet50和aspnetcore50?