asp.net-mvc – 使用Ninject注册到自定义成员资格提供程序
我试图在MVC 3中使用ninject注入一个自定义成员资格提供商。
在MembershipProvider我已经尝试了以下: [Inject] public ICustomerRepository _customerRepository{ get; set; } 和 [Inject] public TUMembershipProvider(ICustomerRepository customerRepository) { _customerRepository = customerRepository; } 在我的ninject模块中,我尝试了以下内容: Bind<MembershipProvider>().ToConstant(Membership.Provider); 以上都没有。 当我使用(在global.asa中) kernel.Inject(Membership.Provider); 和…一起 [Inject] public ICustomerRepository _customerRepository{ get; set; } 它的工作原理,但是我没有生命周期管理,这将导致NHibernate的“ISession开放”错误,因为ISession是InRequestScope,而存储库不是。 解决方法
您可以使用方法
@Remo Gloor outlines in his blog post on provider injection.它涉及3个步骤:
>将[注入]添加到您需要注入的提供商上的任何属性(尽管他显示的模式 – 创建一个非常简单的类,其唯一的功能是容纳属性注入,并将任何请求转发到使用构造函数实现的实际类中注射 – 值得关注) public class MyMembershipProvider : SqlMembershipProvider { [Inject] public SpecialUserProvider SpecialUserProvider { get;set;} ... >创建一个初始化程序包装器,它实现IHttpModule,它提供提供者,触发它的创建: public class ProviderInitializationHttpModule : IHttpModule { public ProviderInitializationHttpModule(MembershipProvider membershipProvider) { } ... >在注册服务中注册IHttpModule: kernel.Bind<IHttpModule>().To<ProviderInitializationHttpModule>(); >没有4;在启动过程中,Ninject执行其他操作 – 引导所有注册的IHttpModules,包括您添加的一个。 (不要忘记阅读博客帖子等等的评论) 最后,如果你正在寻找一个完全可以彻底解决这个问题的东西,请试试this @Remo Gloor answer instead 在整个混乱中,PS是一个伟大的写作是Provider is not a Pattern by @Mark Seemann.(和他的优秀的书籍 – Dependency injection in .NET,这将使你从第一原则舒适地弄清楚这个东西的oboligently插头) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 所有控制器都可以访问的一种方法 – 放在哪
- asp.net-mvc – 如何在MVC中实现工作单元:责任
- asp.net-mvc – 如何重新安装已经在解决方案的packages目录
- asp.net-core – 使用ASP.NET Core创建cookie
- 如何在ASP.NET中设置表单提交的目标框架?
- asp.net-mvc – ASP.NET MVC:从控制器返回CDN图像
- asp.net-mvc – 使用Entity Framework在控制器中检测模型属
- ASP.NET页面创建的事件序列
- ASP.NET / IIS:404适用于所有文件类型
- ASP.NET对txt文件相关操作(读取、写入、保存)