मुझे पता है कि इस तरह के कई प्रश्न हैं, लेकिन जैसा कि मैं किसी भी दस्तावेज का पता लगाने में असमर्थ हूं और किसी अन्य प्रश्न में कोई भी उत्तर नहीं है जो मेरी मदद करता है, यहां जाता है:नवीनतम एमवीसी 5/वेब एपीआई 2 के साथ काम कर रहे नवीनतम निनजेक प्राप्त करना?
मैं एक नया एएसपी बना देता हूं। नेट एप्लिकेशन (वीएस2013), एमवीसी का चयन किया गया है, मैं एपीआई जोड़ता हूं। मैं नवीनतम संस्करणों (एमवीसी 5.1.2, वेब एपीआई 5.1.2) में अपडेट होने के लिए पैकेज कंसोल में "अपडेट-पैकेज" चलाता हूं।
फिर मैं नया Ninject.MVC5 और Ninject.Web.WebApi पैकेज जोड़ता हूं।
मैं web.config फ़ाइल में ये पंक्तियां जोड़ने (Ninject संस्करण 5.0 चाहता है, मैं 5.1 है):
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Http.WebHost" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
</dependentAssembly>
App_start/NinjectWebCommon.cs में दाखिल मैं एक ही बंधन जोड़ें:
private static void RegisterServices(IKernel kernel) {
kernel.Bind<ILogger, NLogLogger>();
}
फिर मैं एक एकल एपीकंट्रोलर जोड़ता हूं, इलोगर के साथ कन्स्ट्रक्टर में एकल पैरामीटर के रूप में, और मैं होमकंट्रोलर के कन्स्ट्रक्टर को पैरामीटर के रूप में आईएलओगर जोड़ता हूं।
यह परीक्षण के लिए होना चाहिए?
क्या मुझे वेबएपी के लिए कुछ तारों की याद आ रही है? या क्या यह "दृश्यों के पीछे" होता है?
वैसे भी, एपीआई नियंत्रक acessing मुझे इस त्रुटि देता है:
An error occurred when trying to create a controller of type 'TestController'. Make sure that the controller has a parameterless public constructor.
और HomeController कोशिश कर मुझे देता है यह:
Object reference not set to an instance of an object.
मैं एक ही बात की कोशिश की है नवीनतम संकुल को अपडेट किए बिना, , एक ही समस्या है। मैं एमवीसी 3 के साथ वर्षों के लिए निनजेक्ट का उपयोग कर रहा हूं (मैंने Ninject.MVC3 पैकेज भी कोशिश की है), और पूरी तरह से अनजान हूं कि यह क्यों काम नहीं करता है। WebApi के साथ, मैं SetResolver को कुछ कॉल की उम्मीद कर रहा था, लेकिन ..
किसी भी मदद की सराहना की जाएगी!
यह तब होता है जब आप निनजेक्ट के साथ वर्षों से काम करते हैं, लेकिन बीच में एक अमूर्तता के साथ! आपका बहुत बहुत धन्यवाद! बस स्पष्ट करने के लिए, "आप दोनों के लिए एक बार ILogger पंजीकृत करें" के साथ क्या मतलब है कि मैं इसे एक बार पंजीकृत करता हूं, और फिर यह एमवीसी और वेबएपी दोनों के लिए काम करता है? कम से कम ऐसा लगता है कि क्या हुआ है। –
@ रीमो ग्लोर: आपके उत्तर में एक वाक्यविन्यास त्रुटि है। कृपया कर्नेल के बाद '()' जोड़ें। बाइंड करें। तो पूर्ण उत्तर कोड होगा: 'कर्नेल। ()। ();'। मैं इस जवाब में सुधार थक गया, लेकिन स्पष्ट रूप से समीक्षा लोगों को वाक्यविन्यास त्रुटि को ठीक करने में कोई चीज़ उपयोगी नहीं मिली !!! –