मैं वर्तमान में निनजेक्ट का उपयोग कर एक एमवीसी 3 एप्लीकेशन बना रहा हूं। मेरे पास दो नियंत्रक हैं जो निनजेक्ट द्वारा एक भंडार के साथ इंजेक्शन प्राप्त करते हैं, जिनमें से दोनों मेरी स्थानीय मशीन पर ठीक काम करते हैं।
हालांकि, जब मैं उन्हें अपने दूरस्थ वेब सर्वर पर तैनात करता हूं, तो मुझे एक त्रुटि के रूप में The IControllerFactory 'Inventory.Infrastructure.NinjectControllerFactory' did not return a controller for the name 'GetOptions'.
मिलता है, लेकिन केवल जब मैं नियंत्रकों में से एक को मारता हूं - दूसरा ठीक काम करता है। क्या कुछ ऐसा है जो मैं यहाँ गलत कर रहा हूँ? मैं निनजेक्ट और डीआई के लिए काफी नया हूं इसलिए अगर कोई और तरीका है तो मुझे इस बारे में जाना चाहिए, कृपया मुझे बताएं। धन्यवाद!
यहाँ मेरा नियंत्रक कारखाना है
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel ninjectKernel;
public NinjectControllerFactory()
{
ninjectKernel = new StandardKernel();
AddBindings();
}
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
return controllerType == null ? null : (IController)ninjectKernel.Get(controllerType);
}
private void AddBindings()
{
ninjectKernel.Bind<IVehicleRepository>().To<EFVehicleRepository>();
}
}
एप्लिकेशन_स्टार्ट में मेरे पास है:
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
और अंत में, मेरे नियंत्रक हैं
public class InventoryAPIController : Controller
{
IVehicleRepository repository;
public InventoryAPIController(IVehicleRepository repo)
{
repository = repo;
}
}
तथा
public class VehicleController : Controller
{
IVehicleRepository repository;
public VehicleController(IVehicleRepository repo)
{
repository = repo;
}
}
1 उत्तर
अपने कस्टम नियंत्रक कारखाने के बजाय nuget पर पाए गए Ninject.MVC3 का उपयोग करने का प्रयास करें। यह कंट्रोलर फैक्ट्री के बजाय डिपेंडेंसी रीसोल्वर का उपयोग करता है, जो एमवीसी 3 के लिए पसंदीदा तरीका है।
संबंधित सवाल
नए सवाल
asp.net-mvc-3
ASP.NET MVC 3 .NET फ्रेमवर्क में वेब एप्लिकेशन विकसित करने के लिए मॉडल-व्यू-कंट्रोलर एक्सटेंशन का तीसरा प्रमुख संस्करण है।