ASP.NET में सत्र समय समाप्त


163

मैं IIS 6.0 में ASP.NET 2.0 अनुप्रयोग चला रहा हूँ। मैं चाहता हूं कि डिफ़ॉल्ट 20 मिनट के बजाय सत्र का समय 60 मिनट हो। मैंने निम्नलिखित किया है

  1. सेट <sessionState timeout="60"></sessionState> में web.config
  2. IIS प्रबंधक / वेब साइट गुण / ASP.NET कॉन्फ़िगरेशन सेटिंग्स में सत्र का समय 60 मिनट तक सेट करें।
  3. आवेदन पूल गुण / प्रदर्शन में 60 मिनट के लिए निष्क्रिय समय समाप्त करें।

मुझे अभी भी 20 मिनट में एक सत्र का समय मिल रहा है। क्या वहां मेरे कुछ और करने की आवश्यकता है?


1
कृपया जानकारी दें कि आपने 20 मिनट कैसे मापे। आइए सुनिश्चित करें कि 20 मिनट एक सत्र का समय है, न कि किसी अन्य प्रकार का।
जॉन सॉन्डर्स 1

11
कृपया क्वालिटी आंसर को चिन्हित करें जैसा कि अपवोट / डाउनवोट एरो के पास चेकमार्क का प्रयोग करके स्वीकार किया जाता है
ब्रायन वेबस्टर

3
आठ साल बाद भी सही जवाब स्वीकार नहीं किया गया।
नाथन

कृपया स्पष्ट करें कि आपका IIS प्रबंधक / वेब साइट गुणों / ASP.NET कॉन्फ़िगरेशन सेटिंग्स से क्या मतलब है। IIS में आपने क्या बदलाव किया है?
नीको

जवाबों:


275

क्या आप प्रपत्र प्रमाणीकरण का उपयोग कर रहे हैं?

प्रपत्र प्रमाणीकरण इसका उपयोग टाइमआउट के लिए स्वयं करता है (डिफ़ॉल्ट रूप से 30 मिनट)। एक प्रपत्र प्रमाणीकरण टाइमआउट उपयोगकर्ता को अभी भी सक्रिय सत्र के साथ लॉगिन पृष्ठ पर भेजेगा। यह आपके ऐप द्वारा दिए गए व्यवहार को देख सकता है, जब सत्र का समय एक दूसरे के साथ भ्रमित करना आसान बनाता है।

<system.web>
    <authentication mode="Forms">
          <forms timeout="50"/>
    </authentication>

    <sessionState timeout="60"  />
</system.web>

सत्र टाइमआउट से कुछ कम समय के लिए फॉर्म सेट करना उपयोगकर्ता को कोई भी सत्र डेटा खोए बिना लॉग इन करने के लिए एक विंडो दे सकता है।


@Unbreakable मिनटों में।
वर्ड रीयररेंजर

44

मैं web.config या IIS के बारे में नहीं जानता। लेकिन मेरा मानना ​​है कि C # कोड से आप इसे पसंद कर सकते हैं

Session.Timeout = 60; // 60 is number of minutes

22
क्या यह केवल वर्तमान सत्र के समय-समय को समायोजित करेगा? या यह पूरे आवेदन के लिए समयसीमा समायोजित करेगा?
जॉन्सल

2
दस्तावेज़ में कुछ भी इंगित नहीं करता है कि सेटिंग Session.Timeoutweb.config या IIS का उपयोग करने से अलग है, इसलिए मुझे लगता है कि यह पूरे एप्लिकेशन के लिए है।
10

मुझे लगता है कि @Drasive के पास अधिकार है, लेकिन इसे सर्वर से कम से कम 2 अलग-अलग कनेक्टेड क्लाइंट द्वारा सिद्ध किया जाना चाहिए और आइडल सेशन टाइमआउट की जांच करनी चाहिए।
क्यूमास्टर

42

अपनी web.config फ़ाइल में निम्न कोड ब्लॉक का उपयोग करें। यहां डिफ़ॉल्ट सत्र का समय 80 मिनट है।

<system.web>
 <sessionState mode="InProc" cookieless="false" timeout="80" />
</system.web>

पॉपअप अलर्ट संदेश के साथ सत्र टाइमआउट के लिए निम्नलिखित लिंक का उपयोग करें।

सत्र टाइमआउट उदाहरण

FYI करें: उपरोक्त उदाहरण devexpress popup control के साथ किया गया है इसलिए आपको सामान्य popup नियंत्रण के साथ devexpress popup नियंत्रण को अनुकूलित / प्रतिस्थापित करने की आवश्यकता है। यदि आपके उपयोग devexpress को अनुकूलित करने की कोई आवश्यकता नहीं है


खाना पकाने वाला झूठा?
कीकनेट

3
@Kiquenet, अगर आपने खाना पकाने की मशीन को सही पर सेट किया है तो आपका सेशनआईड URL में एम्बेड हो जाएगा जो कि एक उच्च सुरक्षा जोखिम है। ASP.NET फ्रेमवर्क URL में एक अद्वितीय आईडी सम्मिलित करता है, आप इसे कुकी को अक्षम करके या कुकरैल विशेषता को सही करने के लिए सेट करके जांच सकते हैं। MSDN के अनुसार, डिफ़ॉल्ट रूप से, सत्र मान को ब्राउज़र में एक गैर-निष्कासन सत्र कुकी में संग्रहीत किया जाता है, लेकिन अगर आप cookieless = "true" निर्दिष्ट करते हैं, तो ASP.NET पृष्ठ के URL में स्वचालित रूप से एक अद्वितीय सत्र आईडी डालकर कुकरनी सत्र स्थिति बनाए रखता है। ।
हमजा खानजादा

8

क्या आपके पास machine.config में कुछ भी है जो प्रभावी हो सकता है? Web.config में सत्र का समय निर्धारित करते समय IIS या मशीन में किसी भी सेटिंग को ओवरराइड करना चाहिए। हालांकि, यदि आपके पास अपने ऐप्लिकेशन में सबफ़ोल्डर में कहीं एक web.config फ़ाइल है, तो वह सेटिंग आपके एप्लिकेशन की जड़ में एक को ओवरराइड कर देगी।

इसके अलावा, अगर मुझे सही याद है, तो IIS में टाइमआउट केवल .asp पृष्ठों को प्रभावित करता है, .aspx को नहीं। क्या आप सुनिश्चित हैं कि web.config में आपका सत्र कोड सही है? यह कुछ इस तरह दिखना चाहिए:

<sessionState
    mode="InProc"
    stateConnectionString="tcpip=127.0.0.1:42424"
    stateNetworkTimeout="60"
    sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
    cookieless="false"
    timeout="60"
/>

8

मेरी स्थिति में, यह एप्लीकेशन पूल था। यह xx मिनट के लिए निष्क्रिय होने पर पुनः आरंभ करने के लिए सेट है। जब मैं इसे पुनः आरंभ नहीं करने के लिए सेट करता हूं, तो यह वेब कॉन्फ़िगरेशन से मान का उपयोग करने लगता है।


मुझे पता है कि हम 2020 हैं लेकिन लानत है बस मेरे मुद्दे को हल किया धन्यवाद!
बाइनरी

8

यह आमतौर पर वह सब है जो आपको करने की आवश्यकता है ...

क्या आपको यकीन है कि 20 मिनट के बाद, सत्र खो जाने का कारण निष्क्रिय होने से है ...

सत्र खाली होने के कई कारण हो सकते हैं। आप IIS के लिए ईवेंट लॉगिंग को सक्षम कर सकते हैं और फिर इवेंट व्यूअर का उपयोग करके सत्रों को साफ़ करने के कारणों को देख सकते हैं ... आप पा सकते हैं कि यह अन्य कारणों से है?

आप इवेंट संदेशों के लिए प्रलेखन और घटनाओं की संबद्ध तालिका भी पढ़ सकते हैं ।


3

यदि आप प्रमाणीकरण का उपयोग कर रहे हैं, तो मैं निम्नलिखित को web.config फ़ाइल में जोड़ने की सलाह देता हूं।

मेरे मामले में, उपयोगकर्ताओं को समय समाप्त होने पर लॉगिन पृष्ठ पर भेज दिया जाता है:

<authentication mode="Forms">
    <forms defaultUrl="Login.aspx" timeout="120"/>
</authentication>

मुझे यहाँ त्रुटि मिली <प्रमाणीकरण मोड = "फ़ॉर्म"> के बाद मैं इसे web.config में
रखता हूं


2

चूंकि ASP.Net कोर 1.0 (vNext या इसके लिए जो भी नाम उपयोग किया जाता है) सत्र अलग तरीके से लागू किए जाते हैं। मैंने सत्र टाइमआउट मान को बदलकर Startup.cs, void ConfigureServicesउपयोग कर लिया है:

services.AddSession(options => options.IdleTimeout = TimeSpan.FromSeconds(42));

या यदि आप appsettings.jsonफ़ाइल का उपयोग करना चाहते हैं , तो आप कुछ ऐसा कर सकते हैं:

// Appsettings.json
"SessionOptions": {
    "IdleTimeout": "00:30:00"
}

// Startup.cs
services.AddSession(options => options.IdleTimeout = TimeSpan.Parse(Config.GetSection("SessionOptions")["IdleTimeout"]));

2

आप यहाँ IIS में सेटिंग पा सकते हैं:

समायोजन

यह "एएसपी" के तहत सर्वर स्तर, वेब साइट स्तर या ऐप स्तर पर पाया जा सकता है।

मुझे लगता है कि आप इसे web.config स्तर पर सेट कर सकते हैं। कृपया अपने लिए इसकी पुष्टि करें।

<configuration>
   <system.web>

      <!-- Session Timeout in Minutes (Also in Global.asax) -->
       <sessionState timeout="1440"/>

   </system.web>
</configuration>

Global.asax में भी?
कीकनेट

1

IIS सत्र टाइमआउट मान केवल .asp अनुप्रयोगों के लिए है, इसे IIS कॉन्फ़िगरेशन पर नियंत्रित किया जाता है। आपके मामले में ASP.NET ऐप्स के लिए, केवल web.config- निर्दिष्ट टाइमआउट मान लागू होता है।


IIS के ऐप पूल टाइमआउट के बारे में क्या?
स्टीवकेव

1

डिफ़ॉल्ट सत्र टाइमआउट को IIS से 20 मिनट में परिभाषित किया गया है

IIS 8.5 वेब पर होस्ट की गई प्रत्येक साइट के लिए नीचे दी गई प्रक्रियाओं का पालन करें

IIS टाइमआउट कॉन्फ़िगरेशन

IIS 8.5 प्रबंधक खोलें।

साइट के नाम पर क्लिक करें।

"प्रबंधन" अनुभाग के तहत "कॉन्फ़िगरेशन संपादक" चुनें।

कॉन्फ़िगरेशन संपादक के शीर्ष पर "अनुभाग:" ड्रॉप-डाउन सूची से, "system.web / sessionState" का पता लगाएं।

"टाइमआउट" को "00:20:00 या उससे कम" पर सेट करें, आवेदन के आधार पर संभव न्यूनतम मान का उपयोग करके। स्वीकार्य मूल्य उच्च मूल्य के अनुप्रयोगों के लिए 5 मिनट, मध्यम-मूल्य के अनुप्रयोगों के लिए 10 मिनट और कम के लिए 20 मिनट हैं। -आवेदन करें।

"क्रियाएँ" फलक में, "लागू करें" पर क्लिक करें।


0

यदि आप चाहते हैं कि सत्र का समय वेबसाइट से हटा दिया जाए

<authentication mode="Forms">
      <forms timeout="50"/>
</authentication>

web.config फ़ाइल से टैग।


-1

टाइमआउट संपत्ति मिनट के लिए, आवेदन के लिए सत्र वस्तु को निर्दिष्ट समय-आउट अवधि निर्दिष्ट करती है। यदि उपयोगकर्ता टाइम-आउट अवधि के भीतर पृष्ठ को ताज़ा नहीं करता है या अनुरोध नहीं करता है, तो सत्र समाप्त हो जाता है।

IIS 6.0: न्यूनतम अनुमत मूल्य 1 मिनट है और अधिकतम 1440 मिनट है।

Session.Timeout = 600;

-2

IIS में सत्र टाइमआउट मान बदलने के बाद, कृपया IIS को पुनरारंभ करें। इसे प्राप्त करने के लिए कमांड प्रॉम्प्ट पर जाएं। IISRESET टाइप करें और एंटर दबाएं।


Web.config फ़ाइल को स्वचालित रूप से संपादित करने से IIS रीसेट हो जाता है।
टिमोथी गोंजालेज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.