Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Ninject,在Ninject初始化的RegisterServices中注入Membership.Provider_Asp.net_Asp.net Mvc 3_Ninject.web.mvc - Fatal编程技术网

Asp.net Ninject,在Ninject初始化的RegisterServices中注入Membership.Provider

Asp.net Ninject,在Ninject初始化的RegisterServices中注入Membership.Provider,asp.net,asp.net-mvc-3,ninject.web.mvc,Asp.net,Asp.net Mvc 3,Ninject.web.mvc,有人知道如何在ninject初始化代码的RegisterServices中配置Membership.Provider吗 在我的代码中: /// <summary> /// Load your modules or register your services here! /// </summary> /// <param name="kernel">The kernel.</param> private st

有人知道如何在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);
    }
//
///在这里加载您的模块或注册您的服务!
/// 
///内核。
私有静态无效注册服务(IKernel内核)
{
//在此处添加其他绑定
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Bind().To();
kernel.Inject(Membership.Provider);
kernel.Inject(Roles.Provider);
}
除kernel.Inject行外,所有模块都绑定在一起。我收到错误:“在应用程序的预启动初始化阶段无法调用此方法”

该文件是标准nuget ninject.mvc安装的NinjectWebCommon。 我正在尝试创建一个自定义成员资格提供程序,并在提供程序中注入服务层(SecurityService)


有什么帮助吗?

同样的问题让我头痛不已,我终于找到了一个相对干净的解决方案

基本方法是:

  • 对自定义成员资格提供程序类中的任何依赖项属性使用
    [Inject]
    属性

  • 创建http模块以立即解析/注入提供程序(Ninject 3支持注入HttpModule)

  • RegisterServices()
    方法中最后2个
    inject
    语句替换为提供程序和新HttpModule的绑定

    kernel.Bind().ToMethod(ctx=>Membership.Provider)
    
    kernel.Bind().To()


  • 虽然这与您的问题有点相切,但Mark Seemann的这篇博文()(以及评论)对提供者和依赖注入进行了一些有趣的讨论。这是重复的,这里有一个更好的答案:这与自定义成员资格提供者一起工作,但是,如果我采用您提到的方法,那么如何将自定义RoleProvider作为自定义RoleProvider中的依赖项使用的任何想法都不会被注入。