Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在Windsor Castle中使用MembershipProvider_Asp.net_Asp.net Mvc 3_Castle Windsor_Membership Provider - Fatal编程技术网

Asp.net 在Windsor Castle中使用MembershipProvider

Asp.net 在Windsor Castle中使用MembershipProvider,asp.net,asp.net-mvc-3,castle-windsor,membership-provider,Asp.net,Asp.net Mvc 3,Castle Windsor,Membership Provider,我正在用一个类实现Windsor容器成员资格提供程序。我可以解析实现,但它不调用Initialize方法,该方法从web.config中提取值。如何实例化它并确保它调用Initialize方法 要添加到容器的代码 container.Register(Component.For<FNHMembershipProvider>() .LifeStyle.Transient .Named("myMembershipProvider")); container.Regist

我正在用一个类实现Windsor容器成员资格提供程序。我可以解析实现,但它不调用Initialize方法,该方法从web.config中提取值。如何实例化它并确保它调用Initialize方法

要添加到容器的代码

container.Register(Component.For<FNHMembershipProvider>()
    .LifeStyle.Transient
    .Named("myMembershipProvider"));

container.Register(Component.For<FNHRoleProvider>()
    .LifeStyle.Transient
    .Named("myRoleProvider"));

这里的一个关键点是,不是注入成员类,而是注入成员提供程序。Membership类是根据您的注册表项设置成员资格提供程序并调用Initialize的类。Membership类是一个静态类,虽然可以注入一个返回静态成员类的包装器类,但不能注入它,但我看不出有什么好处


总的来说,我发现让会员使用DI的痛苦远远超过了它的价值。

不过,根据我的要求,我不得不使用DI。那么,我会创建包装器,将其注入我的控制器,然后将该包装器调用为GetUser、create user等吗?是的,就是这样。我想这就是您在mvc3应用程序的VS模板附带的应用程序框架中找到的方法。该模板不使用DI,但很容易弄清楚如何切换到DI。