Web.config में सेशन टाइमआउट कैसे सेट करें


179

मैंने बहुत कोशिश की है, लेकिन ASP.Net वेब अनुप्रयोग के लिए प्रक्रिया सत्र के लिए सत्र टाइमआउट मान सेट करने के तरीके पर कोई समाधान नहीं ढूँढ सकता।

मैं VSTS 2008 + .net 3.5 + C # का उपयोग कर रहा हूं। यहां मैंने जो लिखा है कि 1 मिनट होने के लिए टाइमआउट सेट करें, क्या यह सही है?

मैंने लिखा है system.web सेक्शन में web.config

<sessionState timeout="1" mode="InProc" />

5
आपके द्वारा टाइमआउट परिभाषित करने का तरीका सही है। क्या आपके पास इसके साथ कोई समस्या है?
डारिन दिमित्रोव 10

7
आप जानते हैं कि इसका अर्थ है कि यह 1 मिनट की निष्क्रियता के बाद समाप्त हो जाएगा, न कि इसकी शुरुआत के 1 मिनट के बाद? मेरा अनुमान है कि यदि आप यह प्रश्न पूछ रहे हैं, और टाइमआउट को सही ढंग से टाइप किया है, तो आप गलत हो सकते हैं कि यह कैसे काम करता है।
इवान ज़्लाटनोव

1
मुझे निष्क्रिय समय निर्धारित करने की आवश्यकता है, यह वही है जो मुझे चाहिए। धन्यवाद इवान!
जॉर्ज 2

जबरदस्त हंसी! मैं केवल 1 मिनट के लिए टाइम-आउट सेट करने की अनुशंसा नहीं करूंगा। कि सूनापन को मारने वाला है!
ब्रायन मैक्कार्थी

3
मैं छोटी समयावधि की आवश्यकता को पूरी तरह से समझता हूं। मेरे मामले में यह साइट की प्रयोज्यता का परीक्षण करना है यदि सत्र समाप्त हो जाता है और उपयोगकर्ता के वापस आने पर यह कैसे प्रतिक्रिया करता है। यह परीक्षण करना कठिन है कि सत्र डिबगआउट जल्दी होने तक डिबगिंग भी
ब्रेट वेबर

जवाबों:


323

यदि आप 20 मिनट का समय निर्धारित करना चाहते हैं, तो कुछ इस तरह का उपयोग करें:

    <configuration>
      <system.web>
         <sessionState timeout="20"></sessionState>
      </system.web>
    </configuration>

16
20 मिनट या घंटे? (टाइमआउट = "20")
मुहम्मद औइस


50

timeoutविशेषता में आप जो मान सेट कर रहे हैं वह सत्र टाइमआउट मान सेट करने के सही तरीकों में से एक है।

यह timeoutविशेषता बताती है कि मिनटों की संख्या को छोड़ने से पहले एक सत्र निष्क्रिय हो सकता है। इस विशेषता के लिए डिफ़ॉल्ट मान 20 है।

इस विशेषता के लिए 1 का मान देकर, आपने सत्र को उसके निष्क्रिय होने के बाद 1 मिनट में छोड़ दिया है।

इसका परीक्षण करने के लिए, एक साधारण Aspx पृष्ठ बनाएं, और इस कोड को Page_Load घटना में लिखें,

Response.Write(Session.SessionID);

एक ब्राउज़र खोलें और इस पृष्ठ पर जाएं। एक सत्र आईडी मुद्रित किया जाएगा। एक मिनट के लिए प्रतीक्षा करें, फिर ताज़ा करें। सेशन आईडी बदल जाएगी।

अब, यदि मेरा अनुमान सही है, तो आप सत्र समय समाप्त होते ही अपने उपयोगकर्ताओं को लॉग आउट करना चाहते हैं। ऐसा करने के लिए, आप एक लॉगिन पृष्ठ को रिग कर सकते हैं जो उपयोगकर्ता क्रेडेंशियल्स को सत्यापित करेगा, और इस तरह एक सत्र चर बना सकता है -

Session["UserId"] = 1;

अब, आपको इस चर के लिए हर पेज पर एक चेक करना होगा -

if(Session["UserId"] == null)
    Response.Redirect("login.aspx");

यह नंगे-हड्डियों का उदाहरण है कि यह कैसे काम करेगा।

लेकिन, अपने उत्पादन की गुणवत्ता सुरक्षित ऐप्स बनाने के लिए, ASP.NET द्वारा प्रदान की गई रोल्स और सदस्यता वर्गों का उपयोग करें। वे प्रपत्र-आधारित प्रमाणीकरण प्रदान करते हैं जो आपके द्वारा उपयोग किए जा रहे सामान्य सत्र-आधारित प्रमाणीकरण से बहुत अधिक भरोसेमंद है।


बढ़िया सलाह ... Response.Write (Session.SessionID) के साथ परीक्षण करने से पहले एक सत्र चर सेट करना सुनिश्चित करें; अन्य वार जब आप रिफ्रेश करेंगे तो हर बार एक नई आईडी के साथ रिफ्रेश होगा।
क्रिस कैटिगनानी

1

यदि आप MVC का उपयोग कर रहे हैं, तो आप इसे web.config फ़ाइल में वेब एप्लिकेशन के रूट निर्देशिका में डालते हैं, न कि व्यू निर्देशिका में web.config। यह भी system.web नोड में होना चाहिए, जैसा कि जॉर्ज 2 ने अपने प्रश्न में नहीं कहा था: "मैंने web.config में system.web सेक्शन के तहत लिखा है"

टाइमआउट पैरामीटर मान मिनट का प्रतिनिधित्व करता है।

अन्य विशेषताएँ हैं जो सेशनस्ट्रेट तत्व में सेट की जा सकती हैं। आप यहाँ जानकारी पा सकते हैं: docs.microsoft.com sessionState

<configuration>
   <system.web>
      <sessionState timeout="20"></sessionState>
   </system.web>
</configuration>

फिर आप निम्नलिखित विधि को जोड़कर Global.asax फ़ाइल में एक नए सत्र की शुरुआत को पकड़ सकते हैं:

void Session_Start(object sender, EventArgs e)
{
    if (Session.IsNewSession)
    {
        //do things that need to happen
        //when a new session starts.
    }
}

0

इस में उपयोग करें web.config:

<sessionState 

  timeout="20" 
/>

30
आपको उन सभी विशेषताओं की आवश्यकता नहीं है जिन्हें आप सूचीबद्ध करते हैं, बस timeoutवास्तव में। stateConnectionStringऔर sqlConnectionStringजब नजरअंदाज कर दिया जाता mode="InProc"है, और के लिए मूल्यों modeऔर cookielessउनके डिफ़ॉल्ट मानों की तैयारी में हैं। तो, यह वास्तव में वुल्फवार्ड के जवाब को पूरा करता है।
आर्कैन

0

यदि यह से काम नहीं कर रहा है web.config, तो आपको इसे IIS से सेट करने की आवश्यकता है।

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