Ninject,MVC5 和 Web API 2,找不到无参数的公共构造函数



这可能是一个重复的,但没有somution对我有用;所以我再次发布这个问题。

我有一个同时使用 MVC5 和 WebApi2 的 Web 项目。我已经将带有 Ninject 的构造函数 DI 放在这些控制器上,但是当我尝试访问 Web api 控制器时,我有这个例外:

确保控制器具有无参数公共构造函数。

我在我的NinjectWebCommon.CreateKernel()方法中有这个:

var kernel = new StandardKernel();
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
GlobalConfiguration.Configuration.DependencyResolver = new Ninject.Web.WebApi.NinjectDependencyResolver(kernel);
System.Web.Mvc.DependencyResolver.SetResolver(new Ninject.Web.Mvc.NinjectDependencyResolver(kernel));
return kernel;

以下是控制器的相关内容:

private MyDependency dependency;
public MyController(MyDependency injectedDependency)
{
    this.dependency = injectedDependency;
}

及相关绑定:

private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<MyDependency>().ToSelf().InSingletonScope();
}

我尝试按照此解决方案创建自定义解析程序,但我仍然有例外。我也尝试使用Unity,但我有同样的问题。

我还能尝试什么?

如果MyDependency本身有任何依赖项,那么这些依赖项也必须向内核注册,否则在控制器构造函数注入期间尝试解析MyDependency时将导致异常。

相关内容

最新更新