デフォルトの 30 秒よりも長い時間がかかる、実行時間の長いバックエンド プロセスがいくつかあります。
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>
これを回避するために、Web.config で NHibernate の command_timeout を 60 に設定しようとしています。これは Web.config からのものです。
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="command_timeout">60</property>
</session-factory>
</hibernate-configuration>
残念ながら、これは機能しません。コマンドは 30 秒後にタイムアウトします。
Web アプリと同じように DAO を呼び出すコンソール アプリを作成しました。構成ファイルにまったく同じNHibernate構成設定があります。IDbCommand は、構成ファイルの設定を正常に使用して、30 秒ではなく 60 秒後にタイムアウトします。
アプリのデバッグを試み、Web サイトから 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);
私の質問は、コマンド タイムアウト フィールドが Web.config から 60 に正常に設定された場合、30 秒後にタイムアウトになるのはなぜですか? 私が試すことができるアイデアはありますか?