ASP.NET वेबसाइट पर, स्थिर वर्ग प्रत्येक वेब अनुरोध के लिए विशिष्ट होते हैं, या जब भी जरूरत होती है और जब भी जीसी उनका निस्तारण करता है, तो जब भी जरूरत पड़ती है, तो क्या वे त्वरित होते हैं?
मेरे द्वारा पूछे जाने का कारण यह है क्योंकि मैंने C # से पहले कुछ स्थिर कक्षाएं लिखी हैं और व्यवहार मेरे द्वारा अपेक्षा से अलग है। मैंने स्टैटिक क्लासेस से प्रत्येक अनुरोध के लिए अद्वितीय होने की उम्मीद की होगी, लेकिन ऐसा नहीं लगता कि ऐसा ही है।
यदि वे प्रत्येक अनुरोध के लिए अद्वितीय नहीं हैं, तो क्या उन्हें अनुमति देने का कोई तरीका है?
अद्यतन:
उत्तर सूक्तियों ने मुझे वही दिया जिसकी मुझे आवश्यकता थी। मैं पहले से ही एक सिंगलटन वर्ग का उपयोग कर रहा था, हालांकि यह एक स्थिर उदाहरण का उपयोग कर रहा था और इसलिए अनुरोधों के बीच साझा किया जा रहा था, भले ही उपयोगकर्ता अलग थे जो इस मामले में एक बुरी बात थी। का उपयोग करते हुए HttpContext.Current.Items
हल मेरी समस्या पूरी तरह से। भविष्य में इस सवाल पर ठोकर खाने वाले के लिए, यहाँ मेरा कार्यान्वयन, सरलीकृत और छोटा किया गया है ताकि पैटर्न को समझना आसान हो:
using System.Collections;
using System.Web;
public class GloballyAccessibleClass
{
private GloballyAccessibleClass() { }
public static GloballyAccessibleClass Instance
{
get
{
IDictionary items = HttpContext.Current.Items;
if(!items.Contains("TheInstance"))
{
items["TheInstance"] = new GloballyAccessibleClass();
}
return items["TheInstance"] as GloballyAccessibleClass;
}
}
}
filterContext.Result = new RedirectResult(...)
आप के साथ अपने आइटम खो देंगे क्योंकि एक नया HttpContext बनाया जाएगा। यहाँ अधिक जानकारी: stackoverflow.com/questions/16697601/…