我在使用EF的ASP.NET自定义成员身份实现时遇到问题。问题是,我的web.config具有提供程序的默认值,但在运行时,这些默认值仅在第一次提供程序实例化时在Initialize()中读取(例如,当我通过GET请求Register视图但是当我填写表单并POST到控制器,不会调用提供程序类上的Initialize(),并且所有提供程序设置都为null或默认值类型值。
这是我的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 :(得分:0)
这有用吗:How do I call Initialize on a custom MembershipProvider? - 在帖子中发布初始化提供程序的代码会有所帮助。
您无需使用CSL模式将Ninject与此一起使用。虽然我不知道你为什么选择在项目中间改变你的DI框架,但是CSL是半有用的。