有人知道如何在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 行外,所有模块都已绑定(bind)。我收到错误消息:“在应用程序的启动前初始化阶段无法调用此方法”。
该文件是标准 nuget ninject.mvc 安装的 NinjectWebCommon。 我正在尝试创建自定义成员资格提供程序并在提供程序中注入(inject)服务层 (SecurityService)。
有什么帮助吗?
最佳答案
我被同样的问题撞到了墙上,我终于找到了一个相对干净的解决方案here .
基本方法是:
使用
[Inject]
自定义成员资格提供程序类中任何依赖项属性的属性。创建一个 http 模块来立即解析/注入(inject)您的提供者(Ninject 3 支持注入(inject) HttpModules)。
替换最后两个
inject
RegisterServices()
中的语句具有提供程序和新 HttpModule 绑定(bind)的方法。kernel.Bind<MembershipProvider>().ToMethod(ctx => Membership.Provider);
kernel.Bind<IHttpModule>().To<ProviderInitializationHttpModule>();
关于asp.net - ninject,在ninject初始化的RegisterServices中注入(inject)Membership.Provider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10053289/