2011-02-03 12 views
5

मैं कुछ मौजूदा विचारों की तलाश कर रहा हूं कि मौजूदा एएसपीनेट (एमवीसी) एप्लिकेशन के भीतर सत्र स्थिति के सभी उपयोग को तुरंत कैसे ढूंढें।सत्र स्थिति के सभी उपयोगों को ढूंढना

प्रश्न में आवेदन आउटसोर्स किए गए विकास का विषय था, और उत्पादन में ठीक चल रहा है। लेकिन हमने हाल ही में महसूस किया है कि यह (हमारे पसंदीदा मार्ग) राज्य सर्वर के बजाय InProc सत्र स्थिति का उपयोग कर रहा है।

एक छोटे पैमाने पर परीक्षण में, हमने इसे स्टेटसर्वर पर स्विच कर दिया, और सभी ठीक काम किया। हालांकि, जब हम उत्पादन में तैनात थे, तो हमने अचानक बड़ी संख्या में त्रुटियों का अनुभव किया। मुझे यकीन नहीं है कि क्या ये त्रुटियां इस परिवर्तन के कारण हुई थीं (वे वास्तव में डेटाबेस स्तर की समस्याओं के बारे में शिकायत कर रहे थे), लेकिन परिवर्तन को हटाने से एप्लिकेशन को एक बार फिर से काम करने की इजाजत मिली (ऐसा इसलिए हो सकता है क्योंकि यह रीसायकल होने का कारण बनता है)।

तो इससे पहले कि मैं इसे फिर से स्विच करने का प्रयास करता हूं, मैं सत्र में रखी गई सभी वस्तुओं का एक संपूर्ण लेखा परीक्षा करना चाहता हूं (मैंने पहले कुछ नियंत्रकों पर एक त्वरित रूप से देखा था, और वे ठीक लग रहे थे)। अगर मेरे पास कोड पर पूर्ण नियंत्रण था, तो यह एक ऐसा स्थान है जहां मैं कक्षा (टिप्पणी सत्र तक पहुंचने के विभिन्न तरीकों को संकलित और ढूंढने के लिए) पर टिप्पणी करता हूं, फिर एक्सेसर्स को टिप्पणी करें, संकलित करें, और यात्रा करें प्रत्येक त्रुटि। लेकिन मैं .NET फ्रेमवर्क प्रकारों में निर्मित के साथ ऐसा नहीं कर सकता।

तो, प्रत्येक उपयोग को कैसे ढूंढें इस पर कोई स्मार्ट विचार?


मैंने प्रतिबिंबक का उपयोग करने का प्रयास करने का निर्णय लिया। मैं निम्न में से प्रत्येक के लिए विश्लेषण किया है "के द्वारा प्रयोग किया जाता है":

System.Web.HttpSessionStateBase.set_Item(String, Object) : Void 
System.Web.SessionState.HttpSessionState.set_Item(String, Object) : Void 
System.Web.SessionState.HttpSessionState.set_Item(Int32, Object) : Void 
System.Web.HttpSessionStateBase.set_Item(Int32, Object) : Void 
System.Web.HttpSessionStateBase.Add(String, Object) : Void 
System.Web.SessionState.HttpSessionState.Add(String, Object) : Void 

(और जाँच की है कि हम TempData कहीं भी उपयोग नहीं करते हैं)। क्या मुझे कोई अन्य मार्ग याद आ रहा है जिसके द्वारा सत्र सत्र में समाप्त हो सकता है?

+1

आप अपने खुद के SessionState प्रदाता कि inproc प्रदाता लपेटता कर सकता है, लेकिन, जोड़ने के हो जाते हैं और दूर करने के लिए हर कॉल लॉग http://msdn.microsoft.com/en-us/library/ms178587.aspx । इस तरह आप अपने कोड में सत्र के हर उपयोग को ट्रैक करने के लिए कॉल स्टैक का उपयोग कर सकते हैं। –

उत्तर

0

मैं कहता हूं कि "सत्र" के लिए एक समाधान व्यापक खोज करें। इसके अलावा यदि यह एएसपी.NET एमवीसी एप्लीकेशन है, तो यह न भूलें कि टेम्पपडाटा भी सत्र है।

+0

मुझे इसके लिए बहुत सारे झूठे सकारात्मक संकेत मिलते हैं - एनएचबर्ननेट के साथ बहुत सारे काम हैं, जो सत्र के बारे में भी बात करते हैं। –

+0

आहा! nHibernate सत्र। क्या कोई संभावना है कि निबर्ननेट सत्र के साथ काम करने वाली परत वेब सत्र का उपयोग करने की कोशिश नहीं करती है (केवल डेटा संचालन के लिए अलग है)।यदि हां, तो आप अपनी खोज को अकेले वेब प्रोजेक्ट तक सीमित कर सकते हैं। – Pradeep

2

आप एएसपीनेट एमवीसी के लिए स्रोत प्राप्त कर सकते हैं। MVC 1 के लिए MVC 2 http://aspnet.codeplex.com/releases/view/24471 के लिए MVC 3 http://aspnet.codeplex.com/releases/view/41742 के लिए सत्र

http://aspnet.codeplex.com/releases/view/58781 के उपयोग के लिए देखने के लिए

मैं वास्तव में जब आप पता लगाने के लिए क्यों कुछ है की जरूरत के लिए चारों ओर बिछाने के लिए इन काफी उपयोगी पाया है ऐसा कर रहा है

एमवीसी 2 सत्र स्विच के साथ नहीं चलेगा, इसलिए यह सत्रों का उपयोग राज्यसेवर के साथ संगत नहीं हो सकता है।

डीबी त्रुटियों से, ऐसा लगता है कि nHibernate कुछ ऐसा कर रहा है। आप इसके लिए स्रोत भी देख सकते हैं, साथ ही देखने के लिए, लेकिन मुझे यकीन है कि सत्र का उपयोग दस्तावेज किया जाएगा।

साइमन

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