3Da*_*ave 3 c# membership-provider asp.net-mvc-3
我正在实现一个自定义成员资格提供程序,在创建MembershipUser对象之前,所有内容似乎都在游动.那时,我收到错误:
指定的成员资格提供程序名称无效.参数名称:providerName
在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>
Run Code Online (Sandbox Code Playgroud)
从我的自定义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;
}
Run Code Online (Sandbox Code Playgroud)
(我意识到我可能只是从MembershipUser继承我的User类,但它已经是现有类层次结构的一部分.老实说,我认为这是我第一次遇到多重继承的合法需求!)
我的感觉是new MembershipUser(...)providerName参数应该与设置的匹配web.config,但是,因为它们已经匹配,所以我不知道如何继续.
有没有方便的方法来获取代码中的活动成员资格提供程序的名称?
我开始认为使用内置会员系统是过度杀伤,而且比它的价值更麻烦.
编辑 不确定它是否相关,但自定义成员资格提供程序类位于类库中,而不是主WAP项目中.
更新
此处是System.Web.Security.Membership.ProviderVS2010命令窗口中显示的对象内容:
>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 .
Run Code Online (Sandbox Code Playgroud)
更新2
这只是随机开始工作,这意味着我改变了一些但不记得它是什么.愚蠢的大脑.如果我弄清楚问题是什么,我会接受已发布的唯一答案并更新.
我使用Membership.Provider.Name来获取正确的name参数
public static MembershipUser GetUserFromEntity(this UserEntity userEntity)
{
return new MembershipUser(
Membership.Provider.Name,
userEntity.Username,
userEntity.PartitionKey,
userEntity.Email,
userEntity.PasswordQuestion,
userEntity.Comment,
userEntity.IsApproved,
userEntity.IsLockedOut,
userEntity.CreationDate,
userEntity.LastLoginDate,
userEntity.LastActivityDate,
userEntity.LastPasswordChangedDate,
userEntity.LastLockedOutDate
);
}
Run Code Online (Sandbox Code Playgroud)