asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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;}
    ...

>创建一个初始化程序包装器,它实现IhttpR_438_11845@odule,它提供提供者,触发它的创建:

public class ProviderInitializationhttpR_438_11845@odule : IhttpR_438_11845@odule
{
    public ProviderInitializationhttpR_438_11845@odule(MembershipProvider membershipProvider)
    {
    }
...

>在注册服务中注册IhttpR_438_11845@odule:

kernel.bind<IhttpR_438_11845@odule>().To<ProviderInitializationhttpR_438_11845@odule>();

>没有4;在启动过程中,Ninject执行其他操作 – 引导所有注册的IhttpR_438_11845@odules,包括您添加的一个。

(不要忘记阅读博客帖子等等的评论)

最后,如果你正在寻找一个完全可以彻底解决这个问题的东西,请试试this @Remo Gloor answer instead

在整个混乱中,PS是一个伟大的写作是Provider is not a Pattern by @Mark Seemann.(和他的优秀的书籍 – Dependency injection in .NET,这将使你从第一原则舒适地弄清楚这个东西的oboligently插头)

大佬总结

以上是大佬教程为你收集整理的asp.net-mvc – 使用Ninject注册到自定义成员资格提供程序全部内容,希望文章能够帮你解决asp.net-mvc – 使用Ninject注册到自定义成员资格提供程序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。