ASP.NET MVC3自定义成员资格提供程序 - 指定的成员资格提供程序名称无效 [英] ASP.NET MVC3 Custom Membership Provider - The membership provider name specified is invalid

查看:190
本文介绍了ASP.NET MVC3自定义成员资格提供程序 - 指定的成员资格提供程序名称无效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我实现自定义成员资格提供程序,一切似乎直到我创建一个对象的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

The membership provider name specified is invalid. Parameter name: 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项目。

Edit Not 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命令窗口:

Update Here'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自定义成员资格提供程序 - 指定的成员资格提供程序名称无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆