ASP.NET MVC3 Fournisseur d'appartenances Personnalisé - Le nom du fournisseur d'appartenances spécifié n'est pas valide

Je me suis mise en œuvre d'un fournisseur d'appartenances personnalisé, et tout semble aller à merveille jusqu'à ce que je créer un objet MembershipUser. À ce moment, je reçois l'erreur:

Le nom du fournisseur d'appartenances spécifié
n'est pas valide. Nom du paramètre:
providerName

Dans web.config la clé de l'effectif est

<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>

Lors de la création de l'objet MembershipUser de ma classe User personnalisée:

    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;
    }

(Je me rends compte que je pouvais probablement juste d'hériter de ma classe User de MembershipUser, mais elle est déjà partie d'une hiérarchie de classe. Honnêtement, je pense que c'est la première fois que j'ai rencontré un besoin légitime pour l'héritage multiple!)

Mon sentiment est que les new MembershipUser(...) providerName paramètre est censé correspondre à ce qui est défini dans web.config, mais, depuis qu'ils correspondent déjà, je suis à une perte sur la façon de procéder.

Est-il un moyen pratique d'obtenir le nom de l'actif du fournisseur d'appartenances dans le code?

Je commence à penser que l'utilisation de l'intégré dans le système d'adhésion est exagéré, et plus d'ennuis que cela vaut la peine.

Modifier
Vous ne savez pas si elle est pertinente, mais la coutume du fournisseur d'appartenances de classe est dans une bibliothèque de classe, pas le principal projet WAP.

Mise à jour
Voici le contenu de la System.Web.Security.Membership.Provider objet que de montrer dans le VS2010 fenêtre de commande:

>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 .

Mise à jour 2

Ce désordre a commencé à travailler, ce qui signifie que j'ai changé quelque chose, mais ne me souviens pas ce que c'était. Stupide cerveau. Je vais accepter la seule réponse qui a été publiée et mise à jour de cette si-je savoir quel était le problème.

Pouvez-vous essayer de le faire type="Members.Providers.MembersProvider" entièrement quantifié, en mettant de l'assemblée à la fin et voir comment cela fonctionne
Pourriez-vous développer sur de "mettre de l'assemblée à la fin"?
Edit, ignorez-le. Votre modifier avec la trace prouve que c'est le bon type de chargement

OriginalL'auteur 3Dave | 2011-01-03