You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC 3中Ninject配置后失效,控制器报无默认构造函数错误

解决ASP.NET Web API控制器无默认构造函数错误

这个问题我之前碰到过好多次——本质是你虽然用NinjectHttpApplication配置了依赖注入容器,但ASP.NET Web API有自己独立的控制器激活机制,默认情况下它不知道要借助Ninject来解析控制器的依赖,所以才会抛出找不到默认构造函数的错误。

下面是具体的解决步骤:

1. 确认安装必要的Ninject NuGet包

首先确保你已经安装了针对Web API的Ninject扩展包,打开NuGet包管理器控制台运行:

Install-Package Ninject.Web.WebApi
Install-Package Ninject.Web.Common

这两个包会帮你处理Web API和Ninject的集成细节,比如提供核心的NinjectDependencyResolver类。

2. 配置Web API的依赖解析器

修改你的CreateKernel方法,在返回内核之前,把Web API的全局DependencyResolver替换成Ninject的实现。这样Web API就会委托Ninject来创建控制器实例,而不是自己尝试寻找默认构造函数。

修改后的完整代码如下:

using Ninject.Web.WebApi; // 记得添加这个命名空间引用

public class WebApiApplication : NinjectHttpApplication {
    protected override void OnApplicationStarted() {
        base.OnApplicationStarted();
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
    
    protected override IKernel CreateKernel() {
        var kernel = new StandardKernel();
        kernel.Load(Assembly.GetExecutingAssembly());
        
        // 你的现有依赖绑定
        kernel.Bind<IMediator>().To<Mediator>().InRequestScope();
        kernel.Bind<SipUnitOfWork>().To<SipUnitOfWork>().InSingletonScope();
        kernel.Bind<IPremissaSimulacaoService>().To<PremissaSimulacaoService>().InSingletonScope();
        
        // 关键:让Web API使用Ninject解析控制器依赖
        GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
        
        return kernel;
    }
}

3. 额外检查项

  • 确认你的SimulacaoController是public访问修饰符,并且确实没有定义默认构造函数(你当前的代码是符合要求的)。
  • 如果你的项目是Owin宿主的Web API,配置方式会略有不同,但从你继承NinjectHttpApplication来看,应该是传统IIS宿主,上面的方法完全适用。

这样修改后,Web API就会通过Ninject自动解析SimulacaoController的IMediator依赖,不会再报错找不到默认构造函数了。

内容的提问来源于stack exchange,提问作者grecio beline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:14:06