我有一个自定义成员资格提供程序,我已指定在我的web.config
文件中用于MVC3项目。我假设它将用于代替内置的成员资格提供者,因为我正在指定它的用法:
<system.web>
<membership defaultProvider="CustomMySQLMembershipProvider">
<providers>
<clear />
<add
connectionStringName="dbConn"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="true"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="25"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
applicationName="/jp2012"
name="CustomMySQLMembershipProvider"
type="NameSpace.CustomMySqlMembershipProvider" />
</providers>
</membership>
</system.web>
我是否必须在代码中执行某些操作才能使其覆盖默认的成员资格提供程序?现在我可以像这样访问它:
CustomMySqlMembershipProvider membership =
(CustomMySqlMembershipProvider)Membership.Providers["CustomMySQLMembershipProvider"];
有没有办法让我可以使用web.config
文件自动覆盖它,所以我不必硬编码我的实现名称?更像是这样:
MembershipProvider membership = new MembershipProvider();
有什么想法吗?如果您需要更多信息,请与我们联系。
答案 0 :(得分:2)
您的会员提供商是您的默认提供商。除非您的提供程序中有其他功能,否则您无需显式转换提供程序。
例如,当您致电Membership.GetUser()
时,它会调用您的会员资格证明者的GetUser(...)
方法。
答案 1 :(得分:2)
问题实际上是我如何宣布我的会员资格。这条线
type="NameSpace.CustomMySqlMembershipProvider"
没有指定我的自定义成员资格提供程序所在的程序集。我右键单击了我的项目,选择了属性,并从标记为Assembly name
的字段中获取了程序集名称。
因此,如果我的程序集名称为AName
,那么此行应该是
type="NameSpace.CustomMySqlMembershipProvider, AName"
感谢@Eranga试图帮助我。