我們有一些長時間運行的後端進程需要比默認的30秒更長的時間。更改NHibernate Session.Save命令超時
我們的NHibernate版本是2.0.1.4000,Spring.NET是1.2.0.20313。 NHibernate的是通過Spring.NET這種方式配置:
<object id="SessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate20">
<property name="DbProvider" ref="DbProvider"/>
<property name="MappingAssemblies">
<list>
<value>SomeKindOfAnItem</value>
</list>
</property>
<property name="HibernateProperties">
<dictionary>
<entry key="expiration" value="120"/>
<entry key="adonet.batch_size" value="10"/>
<entry key="cache.provider_class" value="NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache"/>
<entry key="cache.use_query_cache" value="true"/>
<entry key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>
<entry key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
<entry key="dialect" value="NHibernate.Dialect.MsSql2005Dialect"/>
<entry key="current_session_context_class" value="Spring.Data.NHibernate.SpringSessionContext, Spring.Data.NHibernate20"/>
<entry key="show_sql" value="false"/>
</dictionary>
</property>
</object>
要解決這個問題,我想NHibernate的command_timeout設置爲60在Web.config。 這是Web.config文件:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="command_timeout">60</property>
</session-factory>
</hibernate-configuration>
不幸的是,這並不工作,命令超時30秒後。
我構建了一個調用DAO的控制檯應用程序,就像web應用程序一樣。我的配置文件中有完全相同的NHibernate配置設置。 IDbCommand在60秒後超時,而不是30,使用配置文件中的設置成功。
我試着調試應用程序,並檢查從網站調用DAO程序集時是否設置了commandTimeout。它是。
這是從Visual Studio手錶:
((NHibernate.Driver.DriverBase)(((NHibernate.Connection.DriverConnectionProvider) ((NHibernate.Impl.SessionFactoryImpl)session.SessionFactory) .ConnectionProvider ).Driver))的CommandTimeout:60
該會話這樣創建的:
ISession session = SessionFactoryUtils.GetSession(HibernateTemplate.SessionFactory, true);
我的問題是:如果命令超時字段已成功設置爲60從我的Web.config,它爲什麼超時30秒後?我可以嘗試的任何想法?
如果您發佈了一個能夠重現問題的小示例應用程序,這將會很有幫助。編寫這個小示例應用程序可能會告訴你爲什麼它不起作用。 – 2010-02-25 10:14:01
好主意,但我已經做到了。我構建了一個控制檯應用程序來複制問題,但控制檯應用程序可以正常工作,而Web應用程序則不能。 – adomokos 2010-03-02 15:53:48