有人知道如何在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)。
有什么帮助吗?
我因同样的问题而头撞墙,我终于找到了一个相对干净的解决方案here http://www.planetgeek.ch/2012/02/08/asp-net-provider-injection-with-ninject-3-0-0/.
基本方法是:
Use [Inject]
自定义成员资格提供程序类中任何依赖项属性的属性。
创建一个 http 模块来立即解析/注入您的提供程序(Ninject 3 支持注入 HttpModule)。
-
替换最后 2 个inject
你的陈述RegisterServices()
具有提供者和新 HttpModule 绑定的方法。
kernel.Bind<MembershipProvider>().ToMethod(ctx => Membership.Provider);
kernel.Bind<IHttpModule>().To<ProviderInitializationHttpModule>();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)