हमारे पास कुछ लंबी चल रही बैक-एंड प्रक्रियाएं हैं जो डिफ़ॉल्ट 30 सेकंड से अधिक समय लेती हैं।एनएचबीर्नेट सत्र बदलना। कमांड टाइमआउट
हमारा एनएचबेर्नेट संस्करण 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 में से 60 NHibernate command_timeout स्थापित करने के लिए कोशिश कर रहा हूँ। यह Web.config से है:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="command_timeout">60</property>
</session-factory>
</hibernate-configuration>
दुर्भाग्य से यह काम नहीं करता है, आदेश का समय समाप्त 30 सेकंड के बाद।
मैंने एक कंसोल ऐप बनाया जो वेब ऐप की तरह डीएओ को कॉल करता है। मेरे पास इसकी कॉन्फ़िगरेशन फ़ाइल में सटीक एक ही NHibernate कॉन्फ़िगरेशन सेटिंग है। कॉन्फ़िगरेशन फ़ाइल से सफलतापूर्वक सेटिंग का उपयोग करते हुए IDbCommand 60 सेकंड के बाद और 30 नहीं।
मैंने ऐप को डिबग करने का प्रयास किया और जांच की कि क्या कमांडटाइम सेट किया गया था जब डीएओ असेंबली को वेब साइट से बुलाया गया था। ये था।
यह दृश्य स्टूडियो घड़ी से है:
((NHibernate.Driver.DriverBase) (((NHibernate.Connection.DriverConnectionProvider) ((NHibernate.Impl.SessionFactoryImpl) session.SessionFactory) .ConnectionProvider) .Driver)) CommandTimeout:। 60
सत्र ऐसा बनाया जाता है:
ISession session = SessionFactoryUtils.GetSession(HibernateTemplate.SessionFactory, true);
मेरा प्रश्न है: यदि कमांड टाइमआउट फ़ील्ड को सफलतापूर्वक मेरे वेब.कॉन्फिग से 60 पर सेट किया गया था, तो 30 सेकेंड के बाद यह समय क्यों समाप्त हो जाता है? कोई विचार मैं कोशिश कर सकता हूँ?
मददगार होगा यदि आप समस्या का पुनरुत्पादन करने वाले छोटे नमूना ऐप पोस्ट करते हैं तो यह सहायक होगा। यह लिखना कि छोटा नमूना ऐप आपको यह स्पष्ट कर सकता है कि यह क्यों काम नहीं कर रहा है। –
महान विचार, लेकिन मैंने पहले ही ऐसा किया था। मैंने समस्या को दोहराने के लिए एक कंसोल ऐप बनाया है, लेकिन कंसोल ऐप काम करता है और वेब ऐप नहीं करता है। – adomokos