मेरे पास एक एमवीसी 5 एप्लीकेशन है जो निनजेक्ट का उपयोग करता है और मैं इसमें हैंगफायर जोड़ रहा हूं।हैंगफायर कॉन्फ़िगरेशन और निनजेक्ट कॉन्फ़िगरेशन
जब मैंने निनजेक्ट जोड़ा है, तो मैंने कॉन्फ़िगरेशन में इसकी सादगी के कारण NinjectWebCommon
nuget पैकेज का उपयोग किया है। तो अब के लिए निनजेक्ट NinjectWebCommon
कक्षा के माध्यम से कॉन्फ़िगर किया गया है जो एक मानक कर्नेल बनाते हैं और बाइंडिंग जोड़ते हैं।
इसके अलावा मुझे लगता है कि मैं लोड गिरी
private static IKernel CreateKernel() {
var kernel = new StandardKernel(new MyCustomModule());
try {
kernel.Bind<Func<IKernel>>().ToMethod(ctx =>() => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
catch {
kernel.Dispose();
throw;
}
}
Ninject वेब आम WebActivatorEx
वर्ग के माध्यम से पंजीकृत है
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(MyProject.Web.NinjectWebCommon), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(MyProject.Web.NinjectWebCommon), "Stop")]
अब समस्या पर कैसे से संबंधित है बनाने कुछ कस्टम मॉड्यूल बनाया है निंजा कॉन्फ़िगरेशन देखने के लिए हैंगफायर बनाएं। Hangfire.Ninject
पैकेज को देख कर मैं
पढ़ सकते हैं पैकेज IGlobalConfiguration इंटरफेस के लिए एक विस्तार तरीका प्रदान करता है:
var kernel = new StandardKernel();
GlobalConfiguration.Configuration.UseNinjectActivator(kernel);
अब मेरे सवाल कर रहे हैं:
IGlobalConfiguration
इंटरफ़ेस की वजह से, मैं OWIN स्टार्टअप विधि (जहां हैंगफायर कॉन्फ़िगरेशन पहले से ही रखा गया है) के अंदर हैंगफायर निंजा कॉन्फ़िगरेशन जोड़ना चाहिए। मैं कैसे वर्तमान Ninject कर्नेल (एक है कि NinjectWebCommon कॉन्फ़िगर किया है मिलना चाहिए?- क्या निष्पादन के आदेश के बारे में? पहले या Owin स्टार्टअप के बाद क्रियान्वित
WebActivatorEx
है? - अगर मैं विन्यास दो बार निष्पादित करने के लिए कोशिश क्या होता है ?
अधिक आम तौर पर, मैं कैसे दोनों के बीच Ninject विन्यास साझा कर सकते हैं?
संपादित करें: बेहतर बूटस्ट्रैपर आधारित सुझाव के साथ प्रतिस्थापित कस्टम संपत्ति सुझाव, और संरचना जड़ों पर थोड़ा जोड़ा गया। – CrazyPyro