ASP.NET
सत्र की स्थिति
खोज…
वाक्य - विन्यास
- सत्र ["सत्र_केय"] = Obj_Value;
टिप्पणियों
HTTP स्टेटलेस है। ASP.NET सत्र स्थिति एक ढांचा है जो HTTP पृष्ठ अनुरोधों के बीच स्थिति बनाए रखने की सुविधा देता है।
बैक-बैक और अलग-अलग पृष्ठों पर उपलब्ध रहने की क्षमता में सत्र वर्ग स्तर चर से भिन्न होता है। उदाहरण के लिए, Page1.aspx में बनाया गया एक सत्र चर उपलब्ध होगा यदि उपयोगकर्ता को उसी अनुप्रयोग के भीतर Page2.aspx के बाद पुनः निर्देशित किया जाता है।
इसके अलावा, पृष्ठ स्तर पर घोषित स्थिर चर के विपरीत, सत्र चर विभिन्न उपयोगकर्ताओं के लिए स्वतंत्र होते हैं। मतलब, एक उपयोगकर्ता के सत्र चर के मूल्य को बदलने से अन्य उपयोगकर्ताओं के लिए एक ही चर के मूल्य को प्रभावित नहीं किया जाएगा।
जबकि ViewState
का उपयोग उपयोगकर्ता के डेटा को अस्थायी रूप से संग्रहीत करने के लिए किया जा सकता है, यह कई पृष्ठों में डेटा को सहेजने की अनुमति नहीं देता है। इसके अलावा, viewstate
पेज का हिस्सा है और क्लाइंट को भेजा जाता है। परिणामस्वरूप, उपयोगकर्ता से संबंधित किसी भी महत्वपूर्ण जानकारी को ViewState
में सहेजा नहीं जा सकता है, और ViewState
सत्र चर उपयोगी हो जाते हैं।
मूल्यों को संग्रहीत करने के लिए सत्र ऑब्जेक्ट का उपयोग करना
System.Web.SessionState.HttpSessionState
ऑब्जेक्ट HTTP अनुरोधों के बीच मूल्यों को बनाए रखने का एक तरीका प्रदान करता है। नीचे दिए गए उदाहरण में, सत्र में चेतावनी के लिए उपयोगकर्ता की प्राथमिकता को बचाया जा रहा है। बाद में, उपयोगकर्ता को एक और अनुरोध प्रदान करते हुए, आवेदन सत्र से इस प्राथमिकता को पढ़ सकता है और चेतावनी छिपा सकता है।
public partial class Default : System.Web.UI.Page
{
public void LoadPreferences(object sender, EventArgs args)
{
// ...
// ... A DB operation that loads the user's preferences.
// ...
// Store a value with the key showWarnings
HttpContext.Current.Session["showWarnings"] = false;
}
public void button2Clicked(object sender, EventArgs args)
{
// While processing another request, access this value.
bool showWarnings = (bool)HttpContext.Current.Session["showWarnings"];
lblWarnings.Visible = false;
}
}
ध्यान दें कि सत्र चर सभी उपयोगकर्ताओं (कुकीज़ की तरह) के लिए सामान्य नहीं हैं, और वे कई पोस्ट-बैक के बाद बने रहते हैं।
सत्र कुकी को सेट करके काम करता है जिसमें उपयोगकर्ताओं के सत्र के लिए एक पहचानकर्ता होता है। डिफ़ॉल्ट रूप से यह पहचानकर्ता वेब-सर्वर मेमोरी में संग्रहीत किया जाता है, साथ ही इसके खिलाफ संग्रहीत मूल्यों के साथ।
यहां सत्र का ट्रैक रखने के लिए उपयोगकर्ता के ब्राउज़र में कुकी सेट का स्क्रीनशॉट दिया गया है:
SQL सत्र संग्रह का उपयोग करना
यदि आप पाते हैं कि आपके पास कई सर्वर हैं जिन्हें सत्र स्थिति साझा करने की आवश्यकता है, तो इसे ASP.NET प्रक्रिया में संग्रहीत करना मेमोरी काम नहीं करेगा। उदाहरण के लिए, आप एक लोड-बैलेंसर के साथ वेब-फ़ार्म परिवेश में तैनात हो सकते हैं जो एक राउंड-रॉबिन फैशन में अनुरोध वितरित करता है। इस वातावरण में एक ही उपयोगकर्ता के अनुरोधों को कई सर्वरों द्वारा सेवा दी जा सकती है।
Web.config फ़ाइल में आप SQL सर्वर सत्र संग्रह कॉन्फ़िगर कर सकते हैं।
<configuration>
<system.web>
<sessionState
mode="SQLServer"
sqlConnectionString="Data Source=localhost;Integrated Security=SSPI"
cookieless="true"
timeout="30" />
</system.web>
</configuration>
Sql स्कीमा बनाने के लिए aspnet_regsql टूल का उपयोग करें। [SampleSqlServerName] SQL सर्वर का होस्टनाम है। -Dadd सत्र राज्य डेटाबेस बनाने के लिए उपकरण को बताता है। -sstype p उपकरण को डिफ़ॉल्ट नाम ASPState के साथ एक नया डेटाबेस बनाने के लिए कहता है।
aspnet_regsql.exe -S [SampleSqlServerName] -U [Username] -P [Password] -ssadd -sstype p
Amazon DynamoDB सत्र स्टोर का उपयोग करना
यदि आप SQL सर्वर का उपयोग नहीं करना चाहते हैं, तो आप अमेज़ॅन के होस्ट किए गए डायनमो DB nosql डेटाबेस का उपयोग सत्र स्टोर के रूप में कर सकते हैं।
आपको एडब्ल्यूएस एसडीके की आवश्यकता होगी। Visual Studio नूगट पैकेज प्रबंधक कंसोल से इसे स्थापित करने के लिए निम्न कमांड का उपयोग करें
Install-Package AWSSDK
फिर आप एक कस्टम प्रदाता का उपयोग करने के लिए अपने sessionState प्रदाता को कॉन्फ़िगर कर सकते हैं। आपको एक प्रोफ़ाइल या एक IAM पहुंच और गुप्त कुंजी संयोजन क्षेत्र और क्रेडेंशियल्स निर्दिष्ट करना होगा। डिफ़ॉल्ट रूप से यह ASP.NET_SessionState नामक एक तालिका बनाएगा।
<configuration>
<system.web>
<sessionState
timeout="20"
mode="Custom"
customProvider="DynamoDBSessionStoreProvider">
<providers>
<add name="DynamoDBSessionStoreProvider"
type="Amazon.SessionProvider.DynamoDBSessionStateStore"
AWSProfileName="[PROFILE]"
Region="[REGION]"
CreateIfNotExist="true"
/>
</providers>
</sessionState>
</system.web>
</configuration>