我正在尝试使用Castle ActiveRecord,但我一直试图让它在ASP.NET(MVC,如果它很重要)应用程序中工作。 事实上,我在查询期间收到一个ObjectDisposedException,其中包含以下消息:
会议结束!
对象名称:'ISession'。
我正在从XML文件初始化ActiveRecord(如入门所示),其内容为:
<?xml version="1.0" encoding="utf-8" ?>
<activerecord isWeb="true" isDebug="true" threadinfotype="Castle.ActiveRecord.Framework.Scopes.HybridWebThreadScopeInfo, Castle.ActiveRecord">
<config>
<add key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="dialect" value="NHibernate.Dialect.MsSql2008Dialect" />
<add key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="connection.connection_string" value="Data Source=.\SQLEXPRESS;Initial Catalog=testDB;Integrated Security=SSPI" />
<add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle" />
<add key="show_sql" value="true" />
<add key="default_schema" value="testDB.dbo" />
</config>
</activerecord>
不幸的是,主要是由于缺乏文件和我对Castle Windsor的完全无知,我无法找到如何配置它以使其工作,所以如果你们中的任何人能告诉我缺少什么,我会感激不尽或者出了什么问题。
提前致谢
编辑:我应该指定在我在Application_Start中生成并负责运行某些维护任务的线程上发生此错误。
答案 0 :(得分:1)
使用SessionScope。
在Request___Start中,创建一个新的SessionScope()并将其部署在Request_End中。
答案 1 :(得分:0)
在您的ApplicationStart中执行以下操作:
void Application_Start(...) {
using( SessionScope session = new SessionScope() ) {
// Your Startup Logic here
session.Flush();
}
}