asp.net - ninject,在ninject初始化的RegisterServices中注入(inject)Membership.Provider

标签 asp.net asp.net-mvc-3 ninject.web.mvc

有人知道如何在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 .

基本方法是:

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

  2. 创建一个 http 模块来立即解析/注入(inject)您的提供者(Ninject 3 支持注入(inject) HttpModules)。

  3. 替换最后两个 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/

相关文章:

asp.net - 使用指定的操作简单地将 Razor 下拉列表转换为 Bootstrap3 下拉列表

c# - 检查 url 是否可达 - 帮助优化类

c# - .NET 构建和部署

asp.net-mvc - Ninject 注册每个请求

c# - 在 404/500/任何异常上显示 MVC5 中的自定义错误 CSHTML 页面?

javascript - 如何在javascript中定义动态变量

c# - 将多个参数传递给操作

css - 为什么 :active property work in Asp. 不是 net MVC

asp.net-mvc - Ninject.Web.Common 抛出 ActivationException 试图将依赖项注入(inject) HttpApplicationInitializationHttpModule

dependency-injection - Ninject Conditional Self 绑定(bind)以更改范围(对于任务调度程序)无法正常工作?