注意:这里有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();
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(与上面的代码有点相关)的最后一个问题是关于释放对象.如果您看一下本教程:
最后一段代码:
ObjectFactory.ReleaseAnddisposeAllHttpScopedobjects();
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。