2012-02-21 23 views
20

web.config में, मैंने सत्रस्टेट में 20 मिनट तक टाइमआउट सेट किया है। एमएसडीएन के मुताबिक, यह टाइमआउट छोड़ने से पहले एक सत्र निष्क्रिय होने के मिनटों की संख्या निर्दिष्ट करता है। आईआईएस 7 में, डिफ़ॉल्ट वेब साइट-> सत्र राज्य-> कुकी सेटिंग्स-> टाइम आउट स्वचालित रूप से web.config में टाइमआउट मान सेट के साथ आबादी है, जो मेरे मामले में 20 मिनट है। साथ ही, एप्लिकेशन पूल-> DefaultAppPool-> उन्नत सेटिंग्स-> निष्क्रिय टाइमआउट, मैंने इसे 10 मिनट तक सेट किया है।आईआईएस 7 में सत्र टाइमआउट कैसे काम करता है?

फिर मैंने दो परीक्षण किए: पहला परीक्षण: मैंने अपने वेब ऐप में 3:45 बजे लॉग इन किया, 10 मिनट के लिए निष्क्रिय। 3:55 बजे, मैंने अपने ऐप का उपयोग करने की कोशिश की, मुझे बाहर निकाल दिया गया। मुझे लगता है कि idleTimeout खेल में आता है।

दूसरा परीक्षण: मैंने 4:00 बजे अपने वेब ऐप में लॉग इन किया, ऐप के साथ 4:05 बजे, 4:10 बजे, 4:15 बजे और 4:20 बजे खेला। मुझे उम्मीद है कि 4:20 बजे बाहर निकाल दिया जाएगा। लेकिन मैं नहीं था। मैंने सोचा कि आईआईएस 7 में सत्र स्थिति टाइमआउट (20min) वेब एजेंट द्वारा उपयोगकर्ता को फिर से प्रमाणित करने के लिए चुनौती देने से पहले उपयोगकर्ता सत्र सक्रिय होने की अधिकतम मात्रा है। जाहिर है इस परीक्षा से, यह नहीं है। क्या कोई मुझे यह समझा सकता है? इसके अलावा, मैं उपरोक्त मामले के लिए टाइमआउट कैसे सेट कर सकता हूं?

उत्तर

34

सत्र टाइम-आउट एक स्लाइडिंग टाइम-आउट है जो प्रत्येक बार सर्वर पर जाने पर कॉन्फ़िगर किए गए मान पर उपयोगकर्ता के लिए रीसेट किया जाता है।

आवेदन निष्क्रिय समय-समय पर उस समय के लिए आपके आवेदन के लिए कोई अनुरोध नहीं होने पर लागू होता है।

सामान्य स्थितियों इसलिए है:

Time | User A  | User B  | Session States 
------+--------------+--------------+------------------------------------------- 
12:00 | Visits Page1 |    | A: New Session, Time-out: 20 minutes 
12:02 | Visits Page2 |    | A: Time-out reset: 20 minutes 
12:10 |    | Visits Page1 | A: Time-out: 12 min; B: New: 20 minutes 
12:15 |    | Visits Page2 | A: Time-out: 07 min; B: Time-out: 20 min 
12:22 |    |    | A: times out; B: 13 min remaining 
12:32 |    |    | Application Shuts Down (Idle time reached) 
12:35 | Visits Page3 |    | A: New Session Starts 

उपयोगकर्ता A 12:22 के बाद साइट पर लौटने के लिए थे, तो वे पूरी तरह से नए सत्र के लिए होता है, और किसी भी मूल्यों तुम वहाँ में संग्रहीत की गईं पहले से होगा खो गया।

यह सुनिश्चित करने का एकमात्र तरीका है कि सत्र पुनरारंभ करने पर एक सत्र जारी रहता है या तो सत्रस्थान सेवा या SQL सत्र राज्यों को कॉन्फ़िगर करना है, और सुनिश्चित करें कि आपके पास configured the machine.key है ताकि यह हर बार सर्वर पुनरारंभ होने पर स्वत: उत्पन्न नहीं हो जाता है।

आप प्रमाणीकरण के लिए मानक ASP.NET तंत्र का उपयोग कर रहे हैं, तो ASP.NET दो कुकीज़ प्रत्येक उपयोगकर्ता के लिए जारी करेगा देगा:

  1. प्रमाणीकरण टोकन: Authentication time-out सेटिंग से नियंत्रित, के लिए अनुमति देता यदि कुकी समाप्त नहीं हुई है, तो आपकी साइट पर स्वतः लॉग इन हो जाएं, इसे ठीक या स्लाइड किया जा सकता है, और 30 मिनट तक डिफ़ॉल्ट हो सकता है, जिसका अर्थ है कि उनका प्रमाणीकरण टोकन उनके सत्र की तुलना में लंबी "निष्क्रिय" अवधि का सामना कर सकता है।
  2. सत्र टोकन: सत्र टाइम-आउट सेटिंग द्वारा नियंत्रित, आपके एप्लिकेशन को उनकी यात्रा के जीवनकाल के दौरान प्रति उपयोगकर्ता मानों को स्टोर और एक्सेस करने की अनुमति देता है।
उन कुकीज़ के

दोनों MachineKey का उपयोग करके एन्क्रिप्ट कर रहे हैं - इसलिए यदि आपके आवेदन recycles और उत्पन्न न उन टोकन के एक नया कुंजी, decrypted किया जा सकता है में प्रवेश करें और एक नया सत्र बनाने के लिए उपयोगकर्ता की आवश्यकता होती है।


टिप्पणियों का जवाब देते हुए:

  1. 20 मिनट का सत्र टाइम-आउट आइटम आप उन सत्र वस्तु (HttpSessionState) में रखा गया है से संबंधित है Session.Add(string, object) पद्धति का उपयोग करके।
  2. यह निर्भर करता है।यदि आपके पास सही ढंग से configured the machine.key है, प्रमाणीकरण टोकन अभी भी मान्य होगा, और यदि आपके सत्र अब "इनप्रोक" नहीं हैं, तो यह एप्लिकेशन पुनरारंभ के माध्यम से भी जारी रहेगा और अभी भी पठनीय होगा - उपरोक्त नोट देखें।
+0

लेकिन मुझे अपने दूसरे परीक्षण के दौरान फिर से लॉगऑन करने की आवश्यकता क्यों नहीं थी? – GLP

+0

क्योंकि प्रत्येक बार जब आप सर्वर पर जाते हैं तो टाइमर रीसेट होता है - मेरी तालिका के अनुसार। –

+0

धन्यवाद झफ, मेरे पास अभी भी दो प्रश्न हैं, (1) 20 मिनट क्या प्रभावित करेंगे? (2) आवेदन बंद होने के बाद बी को रिलागिन करना होगा? – GLP