現在、Ninjectを使用してMVC3アプリケーションを作成しています。私はNinjectによってリポジトリを注入される2つのコントローラを持っています。どちらもローカルマシン上で正常に動作します。MVC 3アプリケーションで特定の環境でのみNinjectから「No controller returned error」を取得する
しかし、それらを私のリモートWebサーバーにデプロイすると、エラーとしてThe IControllerFactory 'Inventory.Infrastructure.NinjectControllerFactory' did not return a controller for the name 'GetOptions'.
が表示されますが、コントローラの1つに当たったときのみ、他のコントローラは正常に動作します。ここで間違っていることはありますか?私はNinjectとDIにはかなり新しいので、これについて別の方法があれば教えてください。ありがとう!ここで
は私のコントローラの工場のApplication_Startで
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;
}
}
です
ああMVC3固有のバージョンがあることを認識していない、明日、ありがとう! – codechinchilla
それは動作します!再度、感謝します。 – codechinchilla