我正在实现一个自定义的会员提供程序,一切看起来都很顺利,直到我创建了一个MembershipUser对象。此时,我收到错误消息:
从我的自定义用户类创建MembershipUser对象时:
在web.config文件中,成员资格密钥为:指定的成员资格提供程序名称无效。参数名:providerName
<membership defaultProvider="MembersProvider">
<providers>
<clear/>
<add name="MembersProvider" type="Members.Providers.MembersProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="DeviceDatabase" />
</providers>
</membership>
从我的自定义用户类创建MembershipUser对象时:
public static MembershipUser ToMembershipUser(User user)
{
MembershipUser member = new MembershipUser
("MembersProvider"
, user.Name
, user.Id
, user.EmailAddress
, user.PasswordQuestion
, user.Comment
, user.IsApproved
, user.IsLockedOut
, user.DateCreated
, user.LastLoginDate ?? DateTime.MinValue
, user.LastActivityDate ?? DateTime.MinValue
, user.LastPasswordChangedDate ?? DateTime.MinValue
, user.LastLockoutDate ?? DateTime.MinValue
);
return member;
}
(我意识到我可能只需要从MembershipUser继承我的User类,但它已经是现有类层次结构的一部分。我真的认为这是我第一次遇到合法需要多重继承的情况!)
我认为new MembershipUser(...)
提供程序名称参数应该与web.config
中设置的匹配,但由于它们已经匹配,我不知道如何继续。
是否有一种方便的方法在代码中获取活动成员资格提供程序的名称?
我开始觉得使用内置的成员身份验证系统是过度的,而且带来的麻烦不值得。
编辑 不确定是否相关,但自定义成员身份验证提供程序类位于类库中,而不是主WAP项目中。
更新
以下是在VS2010命令窗口中显示的System.Web.Security.Membership.Provider
对象的内容:
>eval System.Web.Security.Membership.Provider
{Members.Providers.MembersProvider}
[Members.Providers.MembersProvider]: {Members.Providers.MembersProvider}
base {System.Configuration.Provider.ProviderBase}: {Members.Providers.MembersProvider}
ApplicationName: null
EnablePasswordReset: true
EnablePasswordRetrieval: false
MaxInvalidPasswordAttempts: 5
MinRequiredNonAlphanumericCharacters: 0
MinRequiredPasswordLength: 6
PasswordAttemptWindow: 10
PasswordFormat: Function evaluation was aborted.
PasswordStrengthRegularExpression: Cannot evaluate expression because debugging information has been optimized away .
RequiresQuestionAndAnswer: Cannot evaluate expression because debugging information has been optimized away .
RequiresUniqueEmail: Cannot evaluate expression because debugging information has been optimized away .
更新 2
这个问题突然就开始正常工作了,说明我已经改变了一些东西但是却不记得具体是什么了。我的脑子真笨。如果我找到问题所在的话,我会接受唯一已经发布的答案并更新此处的信息。
type="Members.Providers.MembersProvider"
完全限定,并查看其效果? - amarsuperstar