问题描述
我实现自定义成员资格提供程序,一切似乎直到我创建一个对象的MembershipUser去顺顺当当。在这一点上,我收到错误消息:
I'm implementing a custom membership provider, and everything seems to go swimmingly until I create a MembershipUser object. At that point, I receive the error:
中指定的成员资格提供程序名称
是无效的。参数名:
的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>
当从我的自定义用户类创建对象的MembershipUser:
When creating the MembershipUser object from my custom User class:
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,但它已经是一个存在的类层次结构的一部分。老实说,我认为这是我第一次遇到多重继承合法需要! )的
我的感觉是,新的MembershipUser(...)
的providerName参数应该匹配什么在的web.config ,但是,因为他们已经匹配,我在一个不知如何着手。
My feeling is that the
new MembershipUser(...)
providerName parameter is supposed to match what's set in web.config
, but, since they match already, I'm at a loss as to how to proceed.
有没有一种方便的方式获得code?
Is there a convenient way to get the name of the active membership provider in code?
我开始认为,使用内置的会员制度是矫枉过正和更多的麻烦比它的价值。
I'm starting to think that using the built-in membership system is overkill and more trouble than it's worth.
修改
不知道是否是相关的,但自定义成员提供程序类是一个类库,不是主要的WAP项目。
EditNot sure if it's relevant, but the custom membership provider class is in a class library, not the main WAP project.
更新
这里的 System.Web.Security.Membership.Provider
对象的内容呈现在VS2010命令窗口:
UpdateHere's the contents of the
System.Web.Security.Membership.Provider
object as show in the VS2010 command window:
>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
这只是随机开始工作,这意味着我改变了一些东西,但不记得这是什么。笨脑。我会接受一个已经张贴的唯一答案和更新,如果我搞清楚了什么问题。
This just randomly started working, which means I changed something but can't remember what it was. Stupid brain. I'll accept the only answer that's been posted and update this if I figure out what the problem was.
推荐答案
但不是解决办法,但有以下两个功能,你至少可以得到一个想法是什么注册:
Not the solution yet, but with the two following functions you can at least get an idea what is registered:
Membership.Provider
Membership.Providers
我没有继承我的MembershipUser类的用户由于某种原因,但我pretty确保我有它一个很好的理由: - )
I did inherit my User class from MembershipUser for some reason, but I'm pretty sure I had a good reason for it :-)
这篇关于ASP.NET MVC3自定义成员资格提供程序 - 指定的成员资格提供程序名称无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!