2011-12-17 12 views
8

काम नहीं करता है मैंने नीचे कस्टम एसक्यूएल सर्वर का उपयोग करने के लिए सत्रस्टेट को कॉन्फ़िगर किया है और इसे 1 मिनट के बाद समाप्त होने के लिए सेट किया है। ऐसा लगता है कि सत्र हमेशा ब्राउज़र और एसक्यूएल सर्वर पर रहता है। मैंने regenerateExpiredSessionId को झूठी भी सेट किया है और अभी भी वही समस्या है। मैं आईआईएस 7 विंडोज 7 प्रो के तहत एएसपीनेट 4.0 चला रहा हूं।एएसपी.नेट सत्रस्टेट SQLServer मोड टाइमआउट

मेरे web.config विन्यास

<sessionState mode="SQLServer" allowCustomSqlDatabase="true" sqlConnectionString="Data Source=MYCON\SQL2008REXPRESS;Initial Catalog=DBASPState; User ID=DB1543Write;Password=test" timeout="1" sqlCommandTimeout="10" regenerateExpiredSessionId="false" stateNetworkTimeout="10" compressionEnabled="true" cookieless="false" /> 

मैं sessionstate डेटाबेस में तालिका ASPStateTempSessions जाँच की और यह के भीतर रिकॉर्ड देखा है। पढ़ें और लिखें, मालिक की अनुमति वर्तमान में इस डेटाबेस के urrent उपयोगकर्ता के साथ कॉन्फ़िगर किया गया है। "यहां तक ​​कि दर्शक" से कोई त्रुटि नहीं है।

मैंने एएसपीस्टेट टेम्पस सत्र तालिका से मूल्य की जांच की है और नीचे ऐसा लगता है कि सत्र 1 घंटे की तुलना में 5 घंटे की तुलना में बंद है। ऐसा लगता है कि एएसपीनेट ने वर्तमान मशीन टाइमज़ोन की बजाय एक और टाइमज़ोन का उपयोग करके इसे 1 मिनट के भीतर समाप्त कर दिया है।

मेरा वर्तमान समय 12/17/2011 11:29 पूर्वाह्न डाटाबेस कॉलम का मूल्य बनाया गया थाडेटेड (कॉलम) 2011-12-17 17: 2 9: 01.677 समाप्त हो जाता है (कॉलम) 2011-12-17 17:30 : 03.903

डेटाबेस मान पर पूरा विवरण नीचे दिया गया है।

पहले रिकॉर्ड है जब मैं पहली बार मेरी वेबसाइट पर जाएँ

SessionId, Created, Expires, LockDate, LockDateLocal, LockCookie, Timeout, Locked, SessionItemShort, SessionItemLong, Flags 
0wtp4j0traj5e0gydygkyoe22476b033 2011-12-17 17:29:01.677 2011-12-17 17:30:03.903 2011-12-17 17:29:03.873 2011-12-17 11:29:03.873 11 1 False <Binary data> NULL 0 

के बाद मैं अपने ब्राउज़र पर "ताज़ा करें" बटन दबाया, रिकॉर्ड नई समय सीमा समाप्त हो समय के साथ अद्यतन किया गया था लेकिन सत्र जानकारी अभी भी वहाँ है

0wtp4j0traj5e0gydygkyoe22476b033 2011-12-17 17:29:01.677 2011-12-17 17:37:08.910 2011-12-17 17:36:08.907 2011-12-17 11:36:08.907 13 1 False <Binary data> NULL 0 

कोई विचार?

उत्तर

11

समाप्ति समय यूटीसी है।

जब SQL सत्र समाप्त हो जाते हैं, तो उन्हें तुरंत सत्र तालिका से हटाया नहीं जाता है, न ही आपको सत्र_इंड ईवेंट प्राप्त होगा।

SQL सत्र प्रदाता सक्रिय रूप से सत्र तालिका में समाप्ति कॉलम की निगरानी नहीं करता है। इसके बजाए, सत्रों को "आधिकारिक तौर पर" समाप्त नहीं किया जाता है जब तक उन्हें तालिका से हटाया नहीं जाता है, जो SQL एजेंट जॉब के साथ किया जाता है जो DeleteExpiredSessions संग्रहीत प्रक्रिया को कॉल करता है। डिफ़ॉल्ट रूप से, नौकरी हर 60 सेकंड चलाने के लिए कॉन्फ़िगर किया गया है। बेशक, इसका मतलब है कि एसक्यूएल एजेंट को काम की समाप्ति के लिए चलने की जरूरत है। इसका मतलब यह भी है कि "वास्तविक" समाप्ति होने से पहले आपको "नाममात्र" समाप्ति के बाद कम से कम 60 सेकंड का इंतजार करना होगा।

यदि आपको आवश्यकता हो, तो आप एसपी को स्वयं कॉल करके समाप्ति को मजबूर कर सकते हैं।

+0

@ जेम्सस्मिथ क्या यह वास्तव में आपके लिए काम करता है? मुझे भी एक ही समस्या का सामना करना पड़ रहा है लेकिन तालिका से सत्र हटाने के बाद भी लॉगआउट नहीं होता है। क्या आप कुछ विचार दे सकते हैं? – jkyadav

संबंधित मुद्दे