ASP.NET सेशन प्रबंधन [उदाहरण]

⚡ स्मार्ट सारांश

ASP.NET सेशन मैनेजमेंट एक स्टेटलेस HTTP एप्लिकेशन को अनुरोधों के दौरान उपयोगकर्ता डेटा को याद रखने की सुविधा देता है। यह ViewState, कुंजी-मान युग्मों को संग्रहीत करने के लिए सेशन ऑब्जेक्ट, एक कार्यशील उदाहरण, सेशन स्टेट मोड, टाइमआउट कॉन्फ़िगरेशन और सेशन स्टेट के लाभों के बारे में बताता है।

  • 🌐 स्टेटलेस HTTP: HTTP अनुरोधों के बीच डेटा को बरकरार नहीं रखता है, इसलिए ASP.NET स्थिति को संरक्षित करने के लिए तंत्र जोड़ता है।
  • व्यूस्टेट: ViewState स्वचालित रूप से नियंत्रण मानों को एक पृष्ठ से दूसरे पृष्ठ पर ले जाता है।
  • 🔑 सत्र ऑब्जेक्ट: Session[“Key”] एप्लिकेशन के पूरे जीवनचक्र में कुंजी-मान युग्मों को संग्रहीत और पुनर्प्राप्त करता है।
  • ⚙️ राज्य मोड: सेशन स्टेट को InProc, StateServer, SQL Server या कस्टम स्टोर में संग्रहीत किया जा सकता है।
  • समय समाप्त: web.config में sessionState timeout यह नियंत्रित करता है कि कोई सेशन कितने समय तक सक्रिय रहता है।

उदाहरण सहित ASP.NET सेशन मैनेजमेंट ट्यूटोरियल

ASP.NET सत्र प्रबंधन

HTTP प्रोटोकॉल जिस पर सभी वेब एप्लिकेशन काम करते हैं, वह स्टेटलेस प्रोटोकॉल है। स्टेटलेस से इसका मतलब है कि एक अनुरोध से दूसरे अनुरोध तक जानकारी बरकरार नहीं रखी जाती है।

उदाहरण के लिए, यदि आपके पास एक लॉगिन पेज है जिसमें 2 टेक्स्टबॉक्स हैं, एक नाम के लिए और दूसरा पासवर्ड के लिए। जब ​​आप उस पेज पर लॉगिन बटन पर क्लिक करते हैं, तो एप्लिकेशन को यह सुनिश्चित करना होगा कि उपयोगकर्ता नाम और पासवर्ड अगले पेज पर चले जाएँ।

ASP.Net में, यह कई तरीकों से किया जाता है। पहला तरीका ViewState नामक अवधारणा के माध्यम से है। ASP.Net स्वचालित रूप से सभी कंट्रोल्स की सामग्री को स्टोर करता है। यह सुनिश्चित करता है कि यह सामग्री अगले पेज पर भी जाए। यह ViewState नामक प्रॉपर्टी के माध्यम से किया जाता है।

डेवलपर के लिए व्यू स्टेट में कुछ भी बदलना आदर्श नहीं है। ऐसा इसलिए है क्योंकि इसे केवल ASP.Net द्वारा ही नियंत्रित किया जाना चाहिए।

ASP.NET सत्र ऑब्जेक्ट

दूसरा तरीका "सेशन ऑब्जेक्ट" नामक ऑब्जेक्ट का उपयोग करना है। सत्र ऑब्जेक्ट एप्लिकेशन के पूरे जीवनचक्र में उपलब्ध रहता है। आप सत्र ऑब्जेक्ट में किसी भी संख्या में कुंजी-मूल्य जोड़े संग्रहीत कर सकते हैं। इसलिए किसी भी पृष्ठ पर, आप कोड की नीचे दी गई पंक्ति के माध्यम से सत्र ऑब्जेक्ट में मान संग्रहीत कर सकते हैं।

Session["Key"] = value

यह मान को एक सेशन ऑब्जेक्ट में संग्रहीत करता है, और 'की' भाग का उपयोग मान को नाम देने के लिए किया जाता है। इससे बाद में मान को पुनः प्राप्त किया जा सकता है। मान को पुनः प्राप्त करने के लिए, आप नीचे दिए गए कथन का उपयोग कर सकते हैं।

Session["Key"]

ASP.NET सत्र ऑब्जेक्ट उदाहरण

हमारे उदाहरण में, हम पेज पर नाम टेक्स्टबॉक्स फ़ील्ड में दर्ज किए गए नाम को स्टोर करने के लिए सेशन ऑब्जेक्ट का उपयोग करेंगे। फिर हम उस मान को प्राप्त करेंगे और उसे पेज पर प्रदर्शित करेंगे। आइए नीचे दिए गए कोड को Demo.aspx.cs फ़ाइल में जोड़ें।

सत्र ऑब्जेक्ट का उपयोग करें

protected void btnSubmit_Click(object sender, EventArgs e)
{
	Session["Name"] = txtName.Text;

	Response.Write(Session["Name"]);

	lblName.Visible = false;
	txtName.Visible = false;
	lstLocation.Visible = false;
	chkC.Visible = false;
	chkASP.Visible = false;
	rdMale.Visible = false;
	rdFemale.Visible = false;
	btnSubmit.Visible = false;
}

Code स्पष्टीकरण: -

  1. कोड की पहली पंक्ति 'नेम' टेक्स्टबॉक्स कंट्रोल का मान लेती है और उसे सेशन ऑब्जेक्ट में स्टोर करती है। 'सेशन[“नेम”]' कोड निर्दिष्ट करके, हम प्रॉपर्टी को "नेम" नाम दे रहे हैं। प्रॉपर्टी को नाम देने से, बाद में उसे प्राप्त करना आसान हो जाता है।
  2. कोड की अगली पंक्ति सत्र ऑब्जेक्ट से संग्रहीत मान प्राप्त करती है। फिर यह 'Response.Write' विधि के माध्यम से इस मान को क्लाइंट को वापस लिखती है।
  3. अंत में, हम फॉर्म पर मौजूद सभी कंट्रोल्स को अदृश्य कर देते हैं। यदि हम ऐसा नहीं करते हैं, तो सभी कंट्रोल्स और हमारे रिस्पॉन्स वैल्यू एक साथ प्रदर्शित होंगे।

उपरोक्त परिवर्तन करने के बाद, आपको निम्नलिखित आउटपुट दिखाई देगा।

आउटपुट:

सत्र ऑब्जेक्ट का उपयोग करें

आउटपुट से, आप देख सकते हैं कि नाम का सत्र मान पुनर्प्राप्त किया गया और ब्राउज़र में प्रदर्शित किया गया।

ASP.NET सेशन स्टेट मोड्स

ASP.NET सत्र डेटा को कई स्थानों पर संग्रहीत कर सकता है, जिन्हें सत्र स्थिति मोड कहा जाता है। आपके द्वारा चुना गया मोड प्रदर्शन, स्केलेबिलिटी और एप्लिकेशन के पुनः आरंभ होने पर डेटा के बने रहने पर प्रभाव डालता है। नीचे दी गई तालिका इनकी तुलना करती है:

मोड जहां स्थिति संग्रहीत होती है के लिए सबसे अच्छा
इनप्रोक वेब सर्वर की मेमोरी में (डिफ़ॉल्ट) सिंगल-सर्वर ऐप्स; सबसे तेज़, लेकिन रीस्टार्ट करने पर डेटा नष्ट हो जाता है
स्टेटसर्वर एक अलग ASP.NET स्टेट सर्विस प्रक्रिया वेब फ़ार्म; एप्लिकेशन रीस्टार्ट होने पर भी काम करता है
एस क्यू एल सर्वर एक SQL सर्वर डेटाबेस वेब फ़ार्म जिन्हें टिकाऊ, स्केलेबल स्थिति की आवश्यकता होती है
रिवाज एक कस्टम प्रदाता जिसे आप लागू करते हैं रेडिस जैसे विशेष स्टोर
बंद सत्र की स्थिति अक्षम वे एप्लिकेशन जिन्हें सत्रों की आवश्यकता नहीं होती

InProc डिफ़ॉल्ट और सबसे तेज़ विकल्प है, लेकिन लोड-बैलेंस्ड डिप्लॉयमेंट के लिए, StateServer या SQLServer कई सर्वरों में सेशन उपलब्ध रखता है।

ASP.NET में सेशन टाइमआउट को कैसे कॉन्फ़िगर करें

एक सेशन हमेशा के लिए नहीं रहता; निष्क्रियता की अवधि के बाद यह समाप्त हो जाता है। आप web.config फ़ाइल में sessionState एलिमेंट का उपयोग करके यह टाइमआउट सेट कर सकते हैं, जहाँ टाइमआउट का मान मिनटों में होता है।

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

आप इसे कोड में भी सेट कर सकते हैं। Session.Timeout = 30;डिफ़ॉल्ट टाइमआउट 20 मिनट है। कम टाइमआउट चुनने से सर्वर मेमोरी तेज़ी से खाली होती है और सुरक्षा बेहतर होती है, जबकि ज़्यादा टाइमआउट से उपयोगकर्ता ज़्यादा देर तक लॉग इन रह पाते हैं।

सत्र राज्य के लाभ और हानियाँ

सेशन स्टेट सुविधाजनक है, लेकिन इस पर अत्यधिक निर्भर रहने से पहले आपको इसके कुछ नुकसानों पर विचार करना चाहिए।

लाभ:

  • दुकान जैसी प्रति-उपयोगकर्ता जानकारी संग्रहीत करने के लिए उपयोग में आसान।ping कार्ट या लॉगिन विवरण।
  • यह केवल स्ट्रिंग ही नहीं, बल्कि जटिल ऑब्जेक्ट भी स्टोर कर सकता है।
  • डेटा सर्वर पर रखा जाता है, इसलिए यह क्लाइंट-साइड स्टोरेज की तुलना में अधिक सुरक्षित है।

नुकसान:

  • इनप्रोक मोड सर्वर मेमोरी का उपयोग करता है और वेब फ़ार्म में स्केल करने योग्य नहीं है।
  • सेशन का समय समाप्त होने या एप्लिकेशन के पुनः आरंभ होने पर (इनप्रोक मोड में) सेशन डेटा नष्ट हो जाता है।
  • प्रति उपयोगकर्ता बड़ी मात्रा में डेटा संग्रहीत करने से भारी लोड की स्थिति में प्रदर्शन प्रभावित हो सकता है।

अक्सर पूछे जाने वाले प्रश्न

जी हां। एआई सहायक सेशन वैल्यू को स्टोर और रीड करने, सही स्टेट मोड का सुझाव देने और वेब.कॉन्फिग सेटिंग्स लिखने के लिए कोड जनरेट कर सकते हैं। Revजनरेट किए गए कोड को देखकर पुष्टि करें कि यह आपकी स्केलेबिलिटी और सुरक्षा आवश्यकताओं के अनुरूप है।

जी हां। एआई-आधारित कोड समीक्षा उपकरण सत्र निर्धारण, HTTPS-ओनली कुकीज़ की अनुपस्थिति, या सत्र में संवेदनशील डेटा संग्रहीत करने जैसे जोखिमों को चिह्नित कर सकते हैं। इन निष्कर्षों को मार्गदर्शन के रूप में लें और तैनाती से पहले सुरक्षा परीक्षण के माध्यम से सुधारों की पुष्टि करें।

सेशन स्टेट किसी एक उपयोगकर्ता के सेशन का डेटा स्टोर करता है, जबकि एप्लीकेशन स्टेट एप्लीकेशन के सभी उपयोगकर्ताओं द्वारा साझा किया गया डेटा स्टोर करता है। प्रति-उपयोगकर्ता मानों के लिए सेशन का उपयोग करें और काउंटर या कॉन्फ़िगरेशन जैसे वैश्विक डेटा के लिए एप्लीकेशन का उपयोग करें।

नहीं। प्रत्येक उपयोगकर्ता को एक अलग सत्र मिलता है, जिसकी पहचान कुकी में संग्रहीत एक अद्वितीय सत्र आईडी द्वारा की जाती है। एक उपयोगकर्ता दूसरे उपयोगकर्ता के सत्र मानों को नहीं पढ़ सकता है, यही कारण है कि सत्र का उपयोग प्रति-उपयोगकर्ता डेटा के लिए किया जाता है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: