首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ninject注入RoleProvider

使用Ninject注入RoleProvider
EN

Stack Overflow用户
提问于 2014-04-02 01:23:26
回答 1查看 325关注 0票数 2

首先,我想说的是,围绕这个问题,有很多关于SO和google搜索的答案,然而,我遇到了一个问题,阻碍了这些解决方案的工作。答案here似乎是要走的路。(kernel.Inject(Roles.Provider);)

我遇到的问题是,当我试图注入RoleProvider Roles.Provider时,它是空的,但是我的自定义提供程序在Roles.Providers中的列表中找到了。我在想,Ninject试图过早地访问角色提供程序。

在我的NinjectWebCommon类中,它似乎正在使用WebActivator启动它自己。[assembly: WebActivator.PreApplicationStartMethod(typeof(Admin.App_Start.NinjectWebCommon), "Start")]

似乎我遇到的所有文章都在使用较旧版本的Ninject,并且在Global.asax Application_Start中做了很多繁重的工作……使用我的实现,我如何让DI为自定义角色提供程序工作?

我在我的自定义提供程序中使用[Inject]属性。

EN

回答 1

Stack Overflow用户

发布于 2014-04-02 22:11:24

甚至在创建标准ASP.NET堆栈之前,WebActivator管道就已经运行了。这意味着在NinjectWebCommon中引导时,您将无法访问由ASP.NET创建的任何内容。

仅使用该文件来声明绑定,即不依赖于要启动的的ASP.NET内容。为了解决此问题,您应该使用Global.asax Application_Start处理程序来加载依赖于ASP.NET内容(如Roles.Provider )的任何附加模块/绑定。

这里有一个建议,可以解决你的问题:

代码语言:javascript
复制
public void Application_Start()
{
    var kernel = (new Bootstrapper()).Kernel;
    kernel.Inject(Roles.Provider);

    //Other initialization stuff
}

Bootstrapper类是一个惰性单例,它在NinjectWebCommon.cs中初始化了一个静态IKernel。因此,这是从NinjectWebCommon外部检索已配置内核实例的正确方法。

试试看。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22792681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档