【问题标题】:Configuring Ninject in App_start folder specifically ninjectwebcommon.cs file在 App_start 文件夹中配置 Ninject,特别是 ninjectwebcommon.cs 文件
【发布时间】:2014-04-29 16:45:12
【问题描述】:

我有一个简单的查询,我正在关注此链接上的教程: http://www.prideparrot.com/blog/archive/2012/12/how_to_create_a_simple_blog_part1#book-unique-identifier 我的问题是本教程的作者在 global.asax 文件中配置 ninject 并删除了 ninjectwebcommon.cs 文件。我正在尝试将 justblog 集成到我现有的使用 ninjectwebcommon.cs 文件的 asp.netMVC5 应用程序中。

任何帮助将不胜感激。

【问题讨论】:

  • 您面临的具体问题是什么?你能详细说明一下吗
  • @qamar 我正在关注这个prideparrot.com/blog/archive/2012/12/…
  • 你可以在你的 global.asax app_start 函数中创建一个 ninjectwebcommon 类的实例。它会在应用程序启动时被实例化
  • @qamar 很抱歉问这个问题,但我怎么做???你能指出我正确的方向吗,因为我对 asp.netmvc5 很陌生
  • 请找到 global.asax.cs 文件并查找名为 Application_OnStart 的方法。在该方法中创建一个新的 ninjectwebcommon()

标签: c# asp.net-mvc-5


【解决方案1】:

您是否使用 Nuget 添加 Ninject?您需要对 WebActivatorEx 的引用才能使引导程序正常工作(显然还有其他必需的 Ninject 引用)。在项目的App_Start 文件夹中添加一个 NinjectWebCommon.cs 类,如下所示:

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(YourMvcApp.App_Start.NinjectWebCommon), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(YourMvcApp.App_Start.NinjectWebCommon), "Stop")]

namespace YourMvcApp.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(); // you'll add modules to the parameter list here
            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)
        //{
        //}
    }
}       

【讨论】:

    猜你喜欢
    • 2017-11-18
    • 1970-01-01
    • 2017-02-25
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多