代码之家  ›  专栏  ›  技术社区  ›  em70

Castle ActiveRecord错误“会话已关闭”

  •  0
  • em70  · 技术社区  · 15 年前

    我正在尝试从CastleActiveRecord开始,但我一直在尝试让它在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>
    

    不幸的是,主要是由于缺乏文件和我对温莎城堡的完全无知,我无法找到如何配置它使其工作,所以我很感谢你们中的任何人能告诉我什么是缺失的或什么是错误的。

    提前谢谢

    编辑 :我可能应该指定此错误发生在我在应用程序启动时生成的线程上,该线程负责运行某些维护任务。

    2 回复  |  直到 15 年前
        1
  •  1
  •   MZywitza    15 年前

    使用sessionscope。

    在请求_uuuu start中,创建一个新的sessionscope()并在请求_u end中处理它。

        2
  •  0
  •   Thomas    15 年前

    在应用程序中,开始执行以下操作:

    void Application_Start(...)  {
        using( SessionScope session = new SessionScope() ) {
            // Your Startup Logic here
            session.Flush();
        }
    }