我有一个用于访问用户信息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());
}
答案 0 :(得分:1)
尝试在此行中添加自定义成员资格提供程序的构造函数:
public MyCustomMembershipProvider()
{
NinjectWebCommon.Kernel.Inject(this);
}
在我的项目中,我使用了Ninject的自定义成员资格提供程序,而且我的这一行比你更多。
希望有所帮助