В настоящее время я создаю приложение MVC3, используя Ninject. У меня есть два контроллера, которые вставляются в репозиторий Ninject, оба отлично работают на моей локальной машине.
Однако, когда я развертываю их на своем удаленном веб-сервере, я получаю The IControllerFactory 'Inventory.Infrastructure.NinjectControllerFactory' did not return a controller for the name 'GetOptions'.
как ошибку, но только при нажатии на один из контроллеров - другой работает нормально. Здесь я что-то не так делаю? Я довольно новичок в Ninject и DI, поэтому, если есть другой способ, которым я должен идти об этом, пожалуйста, дайте мне знать. Спасибо!
Вот мой контроллер фабрики
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>();
}
}
В Application_Start у меня есть:
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;
}
}