2011-03-28 8 views
9

में हैंडलिंग मैं उपयोगकर्ता को अपनी साइट से दूर जाने पर एएसपी.NET सत्र को नष्ट करने का तरीका जानने का प्रयास कर रहा हूं। मैं ग्लोबल.एक्सएक्स एप्लिकेशन फ़ाइल का उपयोग कर रहा हूं और session_end ईवेंट का उपयोग कर रहा हूं। लॉगआउट बटन पर क्लिक करें। लेकिन जब मैं ब्राउजर को बंद करता हूं तो यह 20 मिनट के बाद ग्लोबल फाइल का उपयोग नहीं करता है। मैं <sessionState mode="InProc" timeout="20"></sessionState> रूप web.conig फ़ाइल में प्रयुक्त
कृपया मेरी मदद करो
ऑगस्टाइनसत्र एएसपीनेट

उत्तर

7

सत्र टाइमआउट को परिभाषित करता है जब कुछ सत्र कुछ निष्क्रिय समय के बाद नष्ट कर दिया जाएगा द्वारा सत्र मार सकते हैं।

यदि आप सत्रों पर अधिक नियंत्रण चाहते हैं, तो आपको SQLServer मोड, स्टेट सर्वर मोड या कस्टम एक का उपयोग करने की आवश्यकता होगी।

मेरा मतलब है कि, क्योंकि उदाहरण के लिए, एक मानक एसक्यूएल सर्वर तालिका में SQLServer मोड भंडार सत्र, हां, तो आप कुछ एसक्यूएल सर्वर काम लागू कर सकते हैं, या Windows में या कुछ Windows सेवा में कुछ काम अनुसूची, तो आप साफ कर सकते हैं आपकी जरूरतों के आधार पर अप सत्र।

वैसे, शायद आपको यह जानना होगा कि यदि आप इनप्रोक का उपयोग कर रहे हैं, तो आपके सत्र नष्ट हो सकते हैं क्योंकि आईआईएस पुनर्नवीनीकरण अनुप्रयोग पूल, या सर्वर पूरी तरह से पुनरारंभ हो गया है। और यह सत्र समाप्त नहीं हो रहा है, इसलिए अपरिवर्तनीय घटना और हैंडलर इस परिदृश्य में काम नहीं करेगा।

मैं दोहराता हूं, अगर आपको बेहतर सत्र प्रबंधन मोड की आवश्यकता है जैसे मैंने आपको सुझाव दिया है।


संपादित करें:

चेक यह पेज: http://aspalliance.com/520_Detecting_ASPNET_Session_Timeouts.2

आप सत्र बेहतर टाइमआउट के बाद से Session_End जब एक सत्र समाप्त हो नहीं बुलाया जाता है संभाल करने का तरीका जानेंगे, लेकिन जब आप कहते हैं " Session.Abandon "।

+0

+1: एक बहुत अच्छा ट्यूटोरियल मटीस। – Kamyar

+0

धन्यवाद। लेकिन मैंने इस ट्यूटोरियल को नहीं बनाया है! : डी –

+0

मुझे पता है। लेकिन साझा करने के लिए धन्यवाद :) – Kamyar

1

आपको बुला रहा Session.Abandon()

+0

उपयोग कर सकते हैं मैं का उपयोग करें Session.abandon और स्पष्ट() लेकिन, मेरा प्रश्न है कि अगर हम अपने ब्राउज़र बंद करने से काम नहीं कर ... – augustine

3

जब ब्राउज़र "नेविगेट करता है" या "अपने ब्राउज़र को बंद कर देता है" ब्राउज़र वेबसाइट पर संकेत नहीं भेजता है। इसलिए एएसपीनेट (या कोई अन्य सर्वर साइड टेक्नोलॉजी) उस सत्र को नष्ट करने के लिए प्रतिक्रिया नहीं दे सकता है।

यही कारण है कि एक सत्र टाइमआउट के साथ काम करता है: यदि उपयोगकर्ता टाइमआउट अवधि के भीतर कोई अनुरोध नहीं करता है, तो वह सत्र को छोड़ देता है, भले ही वह उस पृष्ठ को 20+ मिनट के लिए पढ़ रहा हो।

3

सत्र को कॉल करने वाला एक नया पृष्ठ बनाएं। पृष्ठ लोड पर और रजिस्टर क्लाइंटस्क्रिप्टब्लॉक का उपयोग कर पृष्ठ (विंडो.क्लोज़()) बंद कर देता है। इस नई पेज विंडो को कॉल करें। जावास्क्रिप्ट का उपयोग कर वर्तमान पृष्ठ के अनलोड पर स्थान।

4

आप inproc मोड के SQLServer मोड instread

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