2012-03-08 11 views
11

मेरे पास सी # कोड के साथ एएसपीनेट प्रोजेक्ट है। मेरे पास ग्लोबल वैरिएबल नामक एक स्थिर वर्ग है जहां मैं कुछ जानकारी संग्रहीत करता हूं, उदाहरण के लिए वर्तमान में चयनित उत्पाद की तरह।Asp.net सत्र चर

हालांकि, मैंने देखा कि वेबसाइट का उपयोग करने वाले दो उपयोगकर्ता हैं, यदि कोई चयनित उत्पाद बदलता है, तो सभी के लिए इसे बदलता है। स्थिर चर सभी के लिए संवाद प्रतीत होता है।

मैं कुछ प्रकार के सत्र चर (सी # कोड से) बनाना चाहता हूं, केवल सी # कोड से ही नहीं, बल्कि न केवल पृष्ठ से, बल्कि किसी भी वर्ग से।

+0

स्थैतिक चर अपने आवेदन भर पहुँचा रहे हैं। सत्र का उपयोग उपयोगकर्ता लॉगिन और लॉगआउट के भीतर चर को स्टोर और एक्सेस करने के लिए किया जाता है। अपने चर और सत्रों को अपने चर से बाहर करने के लिए डेटाबेस का उपयोग करें। एकाधिक अनुप्रयोगों के बीच डेटा साझा करने के लिए एक कैश में वितरित कैश का उपयोग करें और अपने [एएसपी.नेट सत्र] (http://www.alachisoft.com/ncache/session-index.html) को स्टोर करें। –

उत्तर

22

हां स्थैतिक चर पूरे एप्लिकेशन द्वारा साझा किए जाते हैं, वे उपयोगकर्ता/सत्र के लिए निजी तौर पर निजी नहीं होते हैं।

एक गैर-पृष्ठ वर्ग से सत्र ऑब्जेक्ट तक पहुंचने के लिए, आपको HttpContext.Current.Session का उपयोग करना चाहिए।

+0

वाह, इतना आसान ^^ धन्यवाद। – Amaranth

+3

@Mathieu शून्य की जांच करना याद रखें, क्योंकि प्रत्येक अनुरोध के लिए सत्र हमेशा नहीं बनाया जाएगा। उदाहरण के लिए, .ashx फ़ाइलों की तरह सरल हैंडलर, सत्र ऑब्जेक्ट बनाने के लिए डिफ़ॉल्ट रूप से सेटअप नहीं होते हैं। –

+0

अप्रोपोस, http://stackoverflow.com/questions/1382791/asp-net-what-to-do-if-current-session-is-null/1382811#1382811 – driis

8

GlobalVariable एक भ्रामक नाम है। जो भी इसे कहा जाता है, यह प्रति सत्र होने पर static नहीं होना चाहिए। आप इस के बजाय की तरह कुछ कर सकते हैं:

// store the selected product 
this.Session["CurrentProductId"] = productId; 

आप या तो Session संग्रह विश्व स्तर पर सुलभ बनाने के लिए कोशिश नहीं करनी चाहिए। इसके बजाय, केवल आवश्यक डेटा को पास करें और जहां उचित हो Session का उपयोग करके सेट/सेट करें।

एमएसडीएन पर session storage in ASP .NET के साथ काम करने पर एक सिंहावलोकन है।

+0

सत्र का उपयोग करने का उदाहरण प्रदान करने के लिए धन्यवाद । – Ernest

7

आपने अपना खुद का प्रश्न उत्तर दिया है। एक सत्र सत्र चर में है। अपनी ग्लोबल वैरिएबल क्लास में, आप उन गुणों को रख सकते हैं जिन्हें सत्र चर द्वारा समर्थित किया जाता है।

उदाहरण:

public string SelectedProductName 
{ 
    get { return (string)Session["SelectedProductName"]; } 
    set { Session["SelectedProductName"] = value; } 
} 
संबंधित मुद्दे