Castle ActiveRecord错误“会话已关闭”

时间:2009-08-28 05:57:52

标签: .net asp.net nhibernate configuration castle-activerecord

我正在尝试使用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中生成并负责运行某些维护任务的线程上发生此错误。

2 个答案:

答案 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();
    }
}