के लिए एक ही उदाहरण वापस नहीं हाल ही में, मैं Ninject 2 से Ninject 3.Ninject 3 InRequestScope एक ही अनुरोध
करने के लिए अपने MVC3 परियोजनाओं में से एक के लिए उन्नत लगाने के लिए क्यों InRequestScope अब उपलब्ध नहीं था की कोशिश कर कुछ मिनटों के बाद, मैंने पाया कि यह अब Ninject.Web.Common का विस्तार है।
अब, जब मैं एप्लिकेशन को चलाने का प्रयास करता हूं, तो निनजेक्ट काम करता है जैसे कि सभी प्रकार के दायरे से बंधे हैं InRequest InTransientScope होगा; हर बार एक नया उदाहरण बनाया गया था।
मेरी कक्षा कि NinjectModule से विरासत में, मैं उस तरह एक साधारण बाँध है:
Bind<ViewModel.Activity>().ToSelf().InRequestScope();
मेरी नियंत्रक में, मैं प्रकार ViewModel.Activity Ninject विशेषता के साथ चिह्नित के 2 गुण होते हैं।
[Inject]
public ViewModel.Activity Activity { get; set; }
[Inject]
public ViewModel.Activity Activity1 { get; set; }
अगर मैं दोनों दो संपत्तियों की हैशकोड का मूल्य डिबग मोड में देखा, वहाँ सब मान अलग है लेकिन HttpContext समान होते हैं; मैं एक ही अनुरोध में हूं।
निनजेक्ट 3 के नए संस्करण के साथ नए Ninject.Web.Common.InRequestScope का सही तरीके से उपयोग करने के तरीके के बारे में मुझे क्या याद आया?
बहुत बहुत धन्यवाद।
आप अपने कोड में निनजेक्ट को कैसे लगा रहे हैं? क्या आप Ninject.MVC3 को nuget से उपयोग कर रहे हैं, और फिर NinjectWebCommon.cs फ़ाइल को संपादित कर रहे हैं? या आप एक कस्टम नियंत्रक कारखाना कर रहे हैं? –
एक कस्टम फैक्टरी – Samuel
@MystereMan आपको बहुत बहुत धन्यवाद। यह वही है जो मैं चाहता हूं। मैंने निनजेक्ट एमवीसी 3 को खोजने के लिए NuGet का उपयोग किया और केवल मेरी निर्भरताओं के बंधन के लिए NinjectWebCommon में जो कहा था उसे जोड़ें और यह काम करता है। मुझे लगता है कि यह काम इन पंक्तियों के कारण क्यों है: DynamicModuleUtility.RegisterModule (typeof (OnePerRequestHttpModule)); और DynamicModuleUtility.RegisterModule (टाइपऑफ (NinjectHttpModule)); OnePerRequestHttpModule प्रत्येक अनुरोध के बाद काम की सभी इकाइयों को भी immeditaly का निपटान करेगा। आपका बहुत बहुत धन्यवाद! – Samuel