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

安装Ninject.MVC5后App_Start缺失NinjectWebCommon.cs的问题排查

解决MVC5中安装Ninject.MVC5后未生成NinjectWebCommon.cs的问题

嗨 Vikash,这种情况在NuGet包安装过程中偶尔会遇到,通常是模板生成触发失败或者依赖缺失导致的。下面给你几个可行的解决步骤:

一、先排查安装过程中的潜在问题

  • 首先打开Visual Studio的输出窗口(菜单→视图→输出),切换到"包管理器"选项卡,重新安装Ninject.MVC5,看看有没有报错信息。如果有依赖缺失或者安装中断的提示,先解决这些问题(比如手动安装缺失的依赖包)。
  • 确认你安装的是正确的包:一定要选择Ninject.MVC5,而不是Ninject.Web.Common或者其他Ninject衍生包,只有前者会针对MVC5项目生成对应的初始化文件。

二、手动创建NinjectWebCommon.cs文件(最直接的解决方法)

如果自动生成失败,完全可以手动创建这个文件,步骤如下:

  1. 在你的项目中找到App_Start文件夹(如果没有就新建一个);
  2. 在该文件夹下新建一个名为NinjectWebCommon.cs的类文件;
  3. 复制以下代码到文件中,记得把YourNamespace替换成你项目的实际命名空间:
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(YourNamespace.App_Start.NinjectWebCommon), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(YourNamespace.App_Start.NinjectWebCommon), "Stop")]

namespace YourNamespace.App_Start
{
    using System;
    using System.Web;
    using Microsoft.Web.Infrastructure.DynamicModuleHelper;
    using Ninject;
    using Ninject.Web.Common;

    public static class NinjectWebCommon 
    {
        private static readonly Bootstrapper bootstrapper = new Bootstrapper();

        /// <summary>
        /// Starts the application
        /// </summary>
        public static void Start() 
        {
            DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
            DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
            bootstrapper.Initialize(CreateKernel);
        }
        
        /// <summary>
        /// Stops the application.
        /// </summary>
        public static void Stop()
        {
            bootstrapper.ShutDown();
        }
        
        /// <summary>
        /// Creates the kernel that will manage your application.
        /// </summary>
        /// <returns>The created kernel.</returns>
        private static IKernel CreateKernel()
        {
            var kernel = new StandardKernel();
            try
            {
                kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
                kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();

                RegisterServices(kernel);
                return kernel;
            }
            catch
            {
                kernel.Dispose();
                throw;
            }
        }
        
        /// <summary>
        /// Load your modules or register your services here!
        /// </summary>
        /// <param name="kernel">The kernel.</param>
        private static void RegisterServices(IKernel kernel)
        {
            // 在这里添加你的依赖注入注册逻辑,比如:
            // kernel.Bind<IMyService>().To<MyServiceImpl>().InRequestScope();
        }
    }
}
  1. 完成后,你就可以在RegisterServices方法中注册你的Web API依赖了,比如绑定接口和实现类。

三、其他可能的排查点

  • 检查App_Start文件夹是否被隐藏:在解决方案资源管理器中点击"显示所有文件"按钮,看看是不是文件夹被隐藏导致看不到生成的文件;
  • 确认WebActivatorEx包已安装:Ninject.MVC5依赖这个包来触发初始化文件的生成,如果它缺失,手动安装WebActivatorEx包后再重装Ninject.MVC5试试。

这样应该就能解决你遇到的问题,顺利在MVC5项目中使用Ninject进行依赖注入了。

内容的提问来源于stack exchange,提问作者V.Prasad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:14:57