asp.net-mvc-3 - 在Ninject初始化的RegisterServices中,ASP.NET Ninject,注入 Membership.Provider

  显示原文与译文双语对照的内容
118 4

任何人都知道如何在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 ) 。

任何帮助?

时间: 原作者:

101 1

我撞到了墙上的这个问题,我最后找到了一个相对清洁的解决方案在这里。

基本方法是:

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

创建一个http模块来解析/注入你的提供程序。

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

kernel.Bind<MembershipProvider>().ToMethod(ctx => Membership.Provider);kernel.Bind<IHttpModule>().To<ProviderInitializationHttpModule>();

原作者:
...