2011-11-23 12 views
9

मेरे एएसपी.NET एप्लिकेशन को डीबग करने के लिए मैंने MessageHandling.cs नामक एक कक्षा बनाई। इस बिंदु पर यह एक सिंगलटन पैटर्न है लेकिन मैं चाहता हूं कि यह प्रति अनुरोध एक उदाहरण हो।प्रति HTTP अनुरोध प्रति वर्ग का एकल उदाहरण

मेरा mssqlDb कक्षा MessagesHandling कक्षा को संदेश जैसे 'डीबी कनेक्टेड', 'डेटा डाला गया' और उस तरह की सामग्री के साथ भरती है। एपीएसएक्स पेज की सभी घटनाओं को संसाधित किया जाता है MessageHandling कक्षा createFile.apsx.cs द्वारा Page_LoadComplete() में पढ़ी जाती है। सभी त्रुटियों और संदेशों को उपयोगकर्ता को दिखाया जाएगा।

इस बिंदु पर सिस्टम डिबगिंग के लिए काम करता है। इस बिंदु पर समस्या यह है कि अनुरोध भेजने के बाद संदेशहैंडिंग खाली नहीं है और कुछ भी किए बिना दूसरी ब्राउज़र पर त्रुटियां भी दिखाई देती हैं। मैं इस प्रणाली का उपयोग अंतिम उपयोगकर्ताओं को संदेश दिखाने के लिए भी करना चाहता हूं: "ब्लॉग बनाया गया"।
Class AClass B
Class C पढ़ता Class B

क्योंकि यह उपयोगकर्ता/सत्र/अनुरोध के अनुसार नहीं है सिंगलटन काम नहीं करता है बनाता है:

मेरी समस्या का मूल निम्नलिखित है। तो मुझे एक और विधि चाहिए।

+0

आप पहले अपने सिंगलटन को तुरंत चालू करते हैं? –

+0

mssqlDb इसका उपयोग करने वाला पहला व्यक्ति है। तो वह जगह है जहां इसे शुरू किया गया है। – h3rj4n

उत्तर

4

HttpContext.Current वर्तमान अनुरोध के लिए HttpContext वस्तु है। इसमें Items संपत्ति है जो IDictionaryobject से object पर है। आप वहां जो कुछ भी पसंद करते हैं उसे डाल सकते हैं, और यह वर्तमान अनुरोध से जुड़ा होगा।

-1

क्या आप सत्र में मौजूद ऑब्जेक्ट मौजूद है या नहीं, यह देखने के लिए आप अपने सिंगलटन के निर्माता में जांच सकते हैं? यदि नहीं, तो इसे बनाएं और फिर इसे वापस करें?

private Singleton() 
{ 
    // do whatever 
} 

public Singleton GetMySingleton() 
{ 
    if(HttpContext.Current.Items["MyCustomSingleton"] == null) 
     HttpContext.Current.Items["MyCustomSingleton"] = new Singleton(); 
    // 

    return (Singleton)HttpContext.Current.Items["MyCustomSingleton"]; 
} 
+0

कोड का वह टुकड़ा प्रति सत्र कैश करेगा, प्रति अनुरोध नहीं। – Bertvan

+0

या, मेरा बुरा। उस भाग को नहीं देखा – Miles

संबंधित मुद्दे