【问题标题】:Nhibernate Session and ASP.NETNhibernate 会话和 ASP.NET
【发布时间】:2009-12-02 20:37:07
【问题描述】:

使用 NhibernateProfiler,我们确定我们正在为每个 http 请求创建一个 ISession。但是 ISessions 永远不会关闭。我们可以在 log 中看到 localSession.Close() 触发的位置。我们的配置文件中有什么东西会导致会话永远不会关闭吗?是否还有其他原因 localSession.Close() 不会物理关闭会话?我们在 NHibernate 2.1 上。

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">JCDCHelper.DAL.Utilities.JCDCConnectionProvider, JCDCHelper.DAL</property>
    <property name="dialect">NHibernate.Dialect.Sybase</property>
    <property name="connection.release_mode">on_close</property>
    <property name="show_sql">true</property>
    <property name="connection.driver_class">JCDCHelper.DAL.Utilities.DataDirectSybaseDriver, JCDCHelper.DAL</property>
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
    <property name="connection.connection_string_name">ProdSybase</property>
    <property name="current_session_context_class">web</property>
    </session-factory>
  </hibernate-configuration>

感谢您花时间阅读本文。

【问题讨论】:

标签: asp.net asp.net-mvc nhibernate isession


【解决方案1】:

你在处理 ISession 吗?将其包装在 using 语句中?

【讨论】:

  • 使用 httpModule 在请求结束时关闭它 oneSession = CurrentSessionContext.Unbind( factoryPerDB[ sessionIndex ] ); oneSession.Flush(); oneSession.Close();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 2010-11-11
  • 2010-09-26
  • 1970-01-01
  • 2011-04-10
相关资源
最近更新 更多