2011-08-02 3 views
1

現在、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; 
    } 
} 
です

答えて

2

Ninject.MVC3をカスタムコントローラーファクトリーの代わりにNugetで使用するようにしてください。これは、ControllerFactoryの代わりにDependencyResolverを使用します.ContentFactoryは、MVC3の推奨方法です。

+0

ああMVC3固有のバージョンがあることを認識していない、明日、ありがとう! – codechinchilla

+0

それは動作します!再度、感謝します。 – codechinchilla

関連する問題