1

我在使用EF的ASP.NET自定义成员资格实现方面遇到问题。事情是,我的web.config具有提供程序的默认值,但在运行时,这些默认值仅在Initialize()中读取,第一次提供程序实例化(例如,当我通过GET请求Register视图时发生,但当我填写表格和POST对供应商类控制器初始化()不会被调用,所有的供应商设置是空的或默认值类型值未从web.config读取成员资格提供程序属性

这是我的web.config部分:

<membership> 
     <providers> 
      <clear /> 
      <add name="AspNetSqlMembershipProvider" 
       type="BN.Membership.EfMembershipProvider, BN" 
       connectionStringName="ApplicationServices" 
       enablePasswordRetrieval="false" 
       enablePasswordReset="true" 
       requiresQuestionAndAnswer="false" 
       requiresUniqueEmail="true" 
       maxInvalidPasswordAttempts="5" 
       minRequiredPasswordLength="6" 
       minRequiredNonalphanumericCharacters="0" 
       passwordAttemptWindow="10" 
       applicationName="/" /> 
     </providers> 
    </membership> 
    <roleManager enabled="false"> 
     <providers> 
      <clear /> 
      <add name="AspNetSqlRoleProvider" 
       type="BN.Membership.EfRoleProvider, BN" 
       connectionStringName="ApplicationServices" 
       applicationName="/" /> 
     </providers> 
    </roleManager> 

因为我的供应商类是相当巨大的,我不是在这里张贴,但如果要求将发布它的某些部分。

+0

这是否有帮助:http://stackoverflow.com/questions/623545/how-do-i-call-initialize-on-a-custom-membershipprovider - 发布初始化提供商在该帖子中的代码将有所帮助。 – jfar 2010-10-22 17:02:38

+0

谢谢,您的评论帮助我意识到我需要从Membership.Providers集合中获取实例,但这需要无参数的构造函数。我忘了提及我使用Ninject,因此显然遇到了这个问题http://stackoverflow.com/questions/2753424/dependency-injection-with-custom-membership-provider – mare 2010-10-22 18:27:34

+0

看来我不得不使用这个http://commonservicelocator.codeplex.com/ ..你在你的项目中使用它吗? – mare 2010-10-22 18:48:07

回答

0

这是否有帮助:How do I call Initialize on a custom MembershipProvider? - 在帖子中发布初始化提供程序的代码会很有帮助。


您不必使用CSL模式来使用Ninject。虽然我不知道为什么你会选择在项目中间改变你的DI框架,但CSLs是半实用的。

+0

我添加了CSL,我有点喜欢它。我喜欢有一些共同的基础来访问所选择的DI框架提供的类型的实例。 – mare 2010-10-24 15:04:36

相关问题