2009-04-14 14 views
22

में सत्र आईडी प्राप्त करें मैं सभी मौजूदा सत्रों की आईडी कैसे प्राप्त कर सकता हूं?एएसपी.Net

उत्तर

0

उत्तर आंशिक रूप से निर्भर करता है कि आप सत्र स्थिति कहां संग्रहीत करते हैं। मान लें कि आप डिफ़ॉल्ट (inproc) का उपयोग करते हैं, तो आप global.asax में Session_Start और Session_End ईवेंट का उपयोग कर वर्तमान सत्र आईडी की एक सूची बनाए रख सकते हैं।

5

आप Global.asax फ़ाइल का उपयोग कर सकते हैं और सत्र को Session_Start ईवेंट पर सेट कर सकते हैं। नीचे

देखें Global.asax फ़ाइल में आप कुछ इस तरह कर सकते हैं: की तरह नीचे

protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Write("Session ID is:" + Session.SessionID.ToString()+ "<br/>"); 
    Response.Write("Session value is:" + Session["sid"].ToString()); 
} 

जानकारी के लिए

protected void Session_Start(object sender, EventArgs e) 
{ 
    Session["sid"] = Session.SessionID; 
    Session["sid"] = "Test"; 
} 

फिर अपने वेबफ़ॉर्म में आप सत्र आईडी और प्राप्त कर सकते हैं मूल्य, http://www.dotnetcurry.com/ShowArticle.aspx?ID=126

देखना
0

यदि आप SQL सर्वर में अपना सत्र स्थिति संग्रहीत कर रहे हैं, तो आप इसे आसानी से वहां से भी प्राप्त कर सकते हैं।

3

Dino Esposito के अनुसार प्रत्येक सत्र के आवेदन के कैश में संग्रहीत किया जाता है और कुछ काम के साथ आप इस जानकारी को पुनर्प्राप्त कर सकते हैं: आप चाहिए

// In a user control or page 
string sessionId = this.Session.SessionID; 

// In a normal class, running in a asp.net app. 
string sessionId = System.Web.HttpContext.Current.Session.SessionID; 

:

DataTable dt = new DataTable(); 
dt.Columns.Add("SessionID", typeof(string)); 
foreach(DictionaryEntry elem in Cache) { 
    string s = elem.Key.ToString(); 
    if (s.StartsWith("System.Web.SessionState.SessionStateItem")) { 
     DataRow row = dt.NewRow(); 
     char[] parms = {':'}; 
     string[] a = s.Split(parms); 
     row["SessionID"] = a[1]; 
     dt.Rows.Add(row); 
    } 
} 
+1

*** asp.net 4.5.1 *** पर लागू होता है? –

43

सत्र id पाने के लिए, यह करने के इसकी आवश्यकता नहीं है:

  • कोई डेटा तालिका या लूप कुछ भी बनाएं
  • सत्र स्थिति
  • हैंडल session_start या Session_End

कुकी-परिदृश्य में के लिए

  • उपयोग एसक्यूएल सर्वर, सत्र id जब आप पहली बार के लिए सत्र वस्तु का उपयोग बनाया जाता है। इससे कोई फर्क नहीं पड़ता, क्योंकि जिस क्षण आप सत्र आईडी संपत्ति का उपयोग करते हैं, सत्र ऑब्जेक्ट का उपयोग किया जाता है।

    अधिक जानकारी के लिए, इस पर विचार:

    http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.sessionid.aspx

    नोट: MSDN उदाहरण बंदरों द्वारा लिखा गया है।

  • 0

    यदि आप मौजूदा सत्रों की एक सूची स्टोर करने का कोई तरीका चाहते हैं जहां आप बैकिंग स्टोर को नियंत्रित करते हैं, ताकि आप क्लाइंट के बारे में अतिरिक्त डेटा स्टोर कर सकें, तो आप एक सूची का उपयोग कर सकते हैं। Application_SessionStart में (मैं अपने सिर के ऊपर से निम्न उदाहरण लिख रहा हूँ)

    हुक global.asax.cs फ़ाइल में:

    static List<string> sessions = new List<string>(); 
    static object sessionLock = new object(); 
    
    void Application_SessionStart() 
    { 
        lock (sessionLock) { 
         sessions.Add(Session.SessionID); 
        } 
    } 
    
    void Application_SessionEnd() 
    { 
        lock (sessionLock) { 
         sessions.Remove(Session.SessionID); 
        } 
    } 
    

    वैकल्पिक रूप से, आप एक शब्दकोश का उपयोग कर सकते, सत्र आईडी भंडारण एक कुंजी के रूप में, और उस उपयोगकर्ता के बारे में अतिरिक्त डेटा मूल्य के रूप में। फिर आप आसानी से एक पृष्ठ बना सकते हैं जो सभी मौजूदा उपयोगकर्ता सत्र दिखाता है, उदाहरण के लिए, वर्तमान उपयोगकर्ता सत्र दिखाने के लिए एक व्यवस्थापक साइट के लिए।

    सत्र एन्ड केवल तभी बुलाया जाएगा जब आपके सत्र इनप्रोक हैं।