Ninject + WebApi +自定义会员提供商+房产注入

时间:2013-09-06 11:31:15

标签: asp.net-mvc asp.net-mvc-4 asp.net-web-api asp.net-membership ninject

我有一个用于访问用户信息IAccountCore的存储库,我有一个自定义成员资格提供程序,我也已实现。我在会员提供商中有财产注入设置,但似乎他们从未注入过。我跟着网上的所有例子都无济于事。

我有ninject bootstrapper + web激活器在post启动方法中触发kernel.Inject(Membership.Provider),但属性始终为null。以下是一些代码段:

WebApi中的Bootstrapper

[assembly: WebActivator.PostApplicationStartMethod(typeof(API.App_Start.NinjectWebCommon), "RegisterMembership")]

从上面调用方法:

public static void RegisterMembership()
{
    //bootstrapper.Kernel.Inject(Membership.Provider);
    bootstrapper.Kernel.Load(new MembershipNinjectModule());
}

Ninject模块(在不同的装配/项目中):

public class MembershipNinjectModule : NinjectModule
{
    /// <summary>
    /// Loads the module into the kernel.
    /// </summary>
    public override void Load()
    {
        var kernel = Kernel;
        kernel.Inject(Membership.Provider);
    }
}

自定义成员资格提供程序中的属性:

[Inject]
public IAccountCore AccountCore {get;set;}

另一个ninject模块中的绑定:

public class NinjectConfigurator : NinjectModule 
{
    public override void Load()
    {
        var kernel = Kernel
        kernel.Bind<IAccountCore>().To<AccountCore>().InTransientScope();
    }
}

在Ninject引导过滤器中加载模块的代码:

private static void RegisterServices(IKernel kernel)
{
    kernel.Load(new NinjectConfigurator());
}

1 个答案:

答案 0 :(得分:1)

尝试在此行中添加自定义成员资格提供程序的构造函数:

public MyCustomMembershipProvider()
{
    NinjectWebCommon.Kernel.Inject(this);
}

在我的项目中,我使用了Ninject的自定义成员资格提供程序,而且我的这一行比你更多。

希望有所帮助