【发布时间】:2011-01-03 18:33:49
【问题描述】:
我正在实现一个自定义成员资格提供程序,在我创建 MembershipUser 对象之前,一切似乎都很顺利。那时,我收到错误:
指定的会员提供者名称 是无效的。参数名称: 提供者名称
在web.config 中,会员密钥是
<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>
从我的自定义 User 类创建 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(...) providerName 参数应该与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"完全量化,看看它是如何工作的 -
你能扩展一下“把一个程序集放在最后”吗?
-
编辑,忽略。您对跟踪的编辑证明它正在加载正确的类型
标签: c# asp.net-mvc-3 membership-provider