2011-02-11 7 views
7

मैं एक बड़े उपयोगकर्ता के साथ एएसपीनेट वेबफॉर्म + एमवीसी 3 में लिखी गई एक बड़ी परियोजना का प्रबंधन कर रहा हूं, और एक बहुत ही उच्च दैनिक विज़िटर गिनती है। असल में, किसी भी पल में बहुत से अनुरोध हैं।क्या एमवीसी 3 में सत्रस्टेट विशेषता ठीक से काम करती है?

MVC में मेरी नियंत्रकों कि संभालती है/में से एक का आकार बदलता है मक्खी पर छवियों को निम्न विशेषता यह करने के लिए आवेदन किया है:

[SessionState(SessionStateBehavior.Disabled)] 

अब, नियंत्रक में एक कार्रवाई सत्र का उपयोग करने की कोशिश करता है तो - यह स्पष्ट रूप से फेंकता एक अपवाद - तो हम अब तक अच्छे हैं।

समस्या यह है: यदि मैं आईआईएस वर्कर प्रक्रिया विंडो (विन सर्वर 2008 आर 2, आईआईएस 7.5) पर जाता हूं, और इस साइट के लिए वर्तमान अनुरोधों की जांच करता हूं, तो मैं कभी-कभी इस नियंत्रक में एक क्रिया के अनुरोध देख सकता हूं। उनकी वर्तमान स्थिति State: RequestAcquireState, Module Name: Session में बंद है। कभी-कभी ये ताले इस राज्य में दूसरे या दो से अधिक हो जाते हैं।

नियंत्रक को अनुरोधों को राज्य को अनदेखा करने के लिए पहली जगह में विशेषता का पूरा बिंदु नहीं था, और राज्य को हासिल करने की कोशिश कर समय बर्बाद नहीं कर सकता था (और संभवतः लॉक किया जा रहा था)?

यदि ऐसा है तो क्या मैं यहां कुछ गलत कर रहा हूं, या समस्या कहीं और झूठ बोल रही है?

+0

हाय लेवी, क्या आप इसे एक उत्तर बना सकते हैं ताकि मैं इसे इस तरह चिह्नित कर सकूं? :) –

उत्तर

12

[टिप्पणी से पलायन]

आप एक कस्टम नियंत्रक कारखाने या मार्ग हैंडलर का उपयोग कर रहे हैं, तो सुनिश्चित करें कि वे नियंत्रक के सत्र राज्य के व्यवहार से अवगत हैं। एक नियंत्रक को चिह्नित करने के लिए सत्र राज्य की आवश्यकता नहीं है, इन दोनों घटकों से सहयोग की आवश्यकता है। आउट-ऑफ-बॉक्स, डिफॉल्ट कंट्रोलर फैक्ट्री और एमवीआर रूट हंडलर को इसके साथ काम करने के लिए डिज़ाइन किया गया है। अधिक जानकारी के लिए DefaultControllerFactory.GetControllerSessionBehavior और MvcRouteHandler.GetHttpHandler देखें। यदि आप कस्टम घटकों को लिख रहे हैं, तो आप उन तरीकों का उपयोग प्रेरणा के रूप में कर सकते हैं।

+1

महान जवाब! मैंने वास्तव में आईआरओटीएंडलर से व्युत्पन्न कस्टम रूट हैंडलर का उपयोग किया। मैंने अपने हैंडलर को इसके बजाय एमवीआर रूट हंडलर से निकाला है, और मेरे ओवरराइड के साथ बेस कार्यान्वयन का उपयोग करना सुनिश्चित किया है। धन्यवाद :) –

+1

डिंग डिंग डिंग डिंग। उस आदमी को एक पुरस्कार दें –

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