2010-02-10 11 views
5

के साथ सत्र_स्टार्ट की बड़ी संख्या मैं अपने विकास बॉक्स (Vista/IIS7 पर .NET 2.0) पर एक एएसपी.NET वेबसाइट चला रहा हूं। global.asax.cs में सत्र_स्टार्ट विधि प्रत्येक कॉल को फ़ाइल (log4net) पर लॉग करता है। सत्र_एंड विधि प्रत्येक कॉल को भी लॉग करता है।समान सत्र आईडी

मैं इनप्रोक सत्र स्थिति का उपयोग कर रहा हूं, और सत्र टाइमआउट को 5 मिनट तक सेट करता हूं (20 मिनट के लिए प्रतीक्षा से बचने के लिए)।

मैंने वेबसाइट पर क्लिक किया, 5 मिनट इकाई के लिए प्रतीक्षा करें, मुझे सत्र_एंड लॉगिंग दिखाई दे रही है। फिर मैं वेबसाइट F5। ब्राउज़र में अभी भी सत्र कुकी है और इसे सर्वर पर भेजता है। सत्र_स्टार्ट को कॉल किया जाता है और एक ही सत्र आईडी का उपयोग करके एक नया सत्र बनाया जाता है (बीटीडब्ल्यू: मुझे इसे एक ही सत्र आईडी होना चाहिए, क्योंकि इसका उपयोग डाटाबेस में डेटा स्टोर करने के लिए किया जाता है)।

परिणाम: हर बार जब मैंने पहले समाप्त सत्र पर F5 मारा, सत्र_स्टार्ट विधि कहा जाता है, अनुरोध निष्पादित किया जाता है और सत्र_इंड विधि तुरंत कहा जाता है।

जब मैं एक अलग ब्राउज़र खोलता हूं, तो सत्र_स्टार्ट विधि को केवल एक बार बुलाया जाता है। फिर 5 मिनट के बाद सत्र FE प्रत्येक F5 सत्र_स्टार्ट/अनुरोध/सत्र_एंड अनुक्रम निष्पादित करने का कारण बनता है।

web.config प्रासंगिक अनुभाग:

<system.web> 
    <compilation debug="true" /> 
    <sessionState timeout="2" regenerateExpiredSessionId="false" /> 
</system.web> 
+0

मुझे इसी समस्या पर मदद चाहिए, लेकिन उन साइटों पर जहां मैंने सत्र के साथ गड़बड़ नहीं की थी। पूरी तरह से यादृच्छिक रूप से साइट पर एक सत्र आईडी के साथ एक उपयोगकर्ता के लिए प्रति दिन सैकड़ों बार सत्र_स्टार्ट में एक डीबी लेनदेन होगा। कोई चेतावनी नहीं, यादृच्छिक साइट प्रभावित, और कोई जवाब नहीं। –

+0

[यह लिंक] देखें (http://stackoverflow.com/a/11375003/779408)। वहां असली समाधान है। – breceivemail

उत्तर

6

regenerateExpiredSessionId सेटिंग cookieless URLs only से संबंधित है, यह एक सत्र कुकी जो दोबारा इस्तेमाल किया जाएगा के व्यवहार को प्रभावित नहीं करता है।

जो समस्या आप अनुभव कर रहे हैं वह एएसपी.NET 2.0/3.5 हैंडल सत्रों के कारण है कि यह उपयोग में है या नहीं। सामान्य परिस्थितियों में यह पहली बार उपयोग किए जाने तक सत्र जारी रखने की कोशिश नहीं करता है और इसलिए सत्र कुकी जारी नहीं करता है (यदि यह अस्तित्व में नहीं है)। पहली बार सत्र उपयोग किया जाता है, सर्वर पर एक सत्र बनाया जाता है और एक सत्र कुकी जारी की जाती है।

अब जब कोई पिछला सत्र पुनरारंभ होता है लेकिन उपयोग नहीं किया जाता है, तो एएसपी.नेट थोड़ा उलझन में पड़ता है। यह अप्रयुक्त (पुनरारंभ) सत्र को तुरंत छोड़ने की कोशिश करता है क्योंकि इसकी आवश्यकता नहीं होती है, जो प्रारंभिक सत्र_एंड बढ़ाता है। हालांकि यह पूर्व-मौजूदा सत्र कुकी को हटा नहीं देता है, और इसलिए प्रत्येक अनुवर्ती अनुरोध अनुक्रम को दोहराता है, पुनरारंभ होता है और फिर कुकी को हटाए जाने तक सत्र समाप्त कर देता है या सत्र का उपयोग किया जाता है।

नेट 4.0 में यह व्यवहार बदल गया है, और घटना इस मामले में अब आग नहीं है।

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