[英]ASP.NET MVC3 Custom Membership Provider - The membership provider name specified is invalid
我正在實現一個自定義成員資格提供程序,在創建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>
從我的自定義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
這只是隨機開始工作,這意味着我改變了一些但不記得它是什么。 愚蠢的大腦。 如果我弄清楚問題是什么,我會接受已發布的唯一答案並更新。
我使用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
);
}
還沒有解決方案,但是通過以下兩個功能,您至少可以了解注冊的內容:
Membership.Provider
Membership.Providers
我確實因為某些原因從MembershipUser繼承了我的User類,但我很確定我有充分的理由:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.