我在使用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>
因为我的供应商类是相当巨大的,我不是在这里张贴,但如果要求将发布它的某些部分。
这是否有帮助:http://stackoverflow.com/questions/623545/how-do-i-call-initialize-on-a-custom-membershipprovider - 发布初始化提供商在该帖子中的代码将有所帮助。 – jfar 2010-10-22 17:02:38
谢谢,您的评论帮助我意识到我需要从Membership.Providers集合中获取实例,但这需要无参数的构造函数。我忘了提及我使用Ninject,因此显然遇到了这个问题http://stackoverflow.com/questions/2753424/dependency-injection-with-custom-membership-provider – mare 2010-10-22 18:27:34
看来我不得不使用这个http://commonservicelocator.codeplex.com/ ..你在你的项目中使用它吗? – mare 2010-10-22 18:48:07