Ninject,在ninject初始化RegisterServices注入Membership.Pr

2019-09-16 09:24发布

任何人都知道如何在ninject初始化代码RegisterServices配置Membership.Provider?

在我的代码:

    /// <summary>
    /// Load your modules or register your services here!
    /// </summary>
    /// <param name="kernel">The kernel.</param>
    private static void RegisterServices(IKernel kernel)
    {
        // Put additional bindings here
        kernel.Bind<IDatabaseFactory>().To<DatabaseFactory>();
        kernel.Bind<IUnitOfWork>().To<UnitOfWork>();
        kernel.Bind<IUserRepository>().To<UserRepository>();
        kernel.Bind<IRoleRepository>().To<RoleRepository>();
        kernel.Bind<ISecurityService>().To<SecurityService>();
        kernel.Inject(Membership.Provider);
        kernel.Inject(Roles.Provider);
    }

所有的模块都绑定与kernel.Inject线除外。 我收到的错误:“这种方法不能在应用程序的预启动初始化阶段被称为”。

该文件是一个标准的NuGet ninject.mvc安装NinjectWebCommon。 我试图创建一个自定义的成员提供者和注射在提供服务层(SecurityService)。

任何帮助吗?

Answer 1:

我打我的反对与此相同的问题墙上头,我终于找到了一个相对干净的解决方案在这里 。

其基本做法是:

  1. 使用[Inject]属性在您的自定义成员资格提供一流的任何依赖属性。

  2. 创建一个HTTP模块来解决/注入你的供应商马上(Ninject 3支持注入的HttpModules)。

  3. 替换那些最后2 inject你的语句RegisterServices()方法与绑定提供者和新的HttpModule。

    kernel.Bind<MembershipProvider>().ToMethod(ctx => Membership.Provider); kernel.Bind<IHttpModule>().To<ProviderInitializationHttpModule>();



文章来源: Ninject, injecting Membership.Provider in RegisterServices of ninject initialization