Question

Je reçois le nom d'utilisateur à partir de l'URL afin de blah.com/kevinuk.

Je veux que le contenu de la page indique KevinUK, ce qui est ce qui est stocké dans la table d'appartenance, mais lorsque je fais ce qui suit, il retourne le même casse que ce que l'entrée a été.

MembershipUser member = Membership.GetUser(user);
string userName = member.UserName;

Comment utiliser un nom d'utilisateur en minuscule comme paramètre et renvoyer la valeur de la base de données avec le casse appropriée?

Était-ce utile?

La solution

Le fournisseur d'adhésion que vous utilisez n'est pas clair, mais vous pouvez facilement en descendre et redéfinir la méthode GetUser.

Créez une classe héritée de la classe MembershipProvider.

public class MyMembershipProvider : MembershipProvider

{

    public MyMembershipProvider()

    {

        //

        // TODO: Add constructor logic here

        //

    }

}

Remplacez la méthode getUser.

public override MembershipUser GetUser(string username, bool userIsOnline)

{
 ... Logic here to do a case insensitive lookup...

}

Enfin, mettez à jour la configuration Web pour utiliser votre nouveau fournisseur:

<system.web>
    <membership defaultProvider="MyMembershipProvider" userIsOnlineTimeWindow="10">
        <providers>
            <add name="MyMembershipProvider" type="Providers.FIFAMembershipProvider"     connectionStringName="ADConnectionString" ... />
        </providers>
    </membership>
</system.web>

Quelques exemples:

http: / /www.eggheadcafe.com/tutorials/aspnet/30c3a27d-89ff-4f87-9762-37431805ef81/aspnet-custom-membership.aspx

http://msdn.microsoft.com/ en-us / library / ms366730 (VS.80) .aspx

Autres conseils

Malheureusement, la méthode Membership.GetUser (chaîne nom_utilisateur) définit simplement le nom d'utilisateur de MembershipUser sur la valeur du paramètre transmis. Pour obtenir la casse correcte, vous devez soit utiliser Membership.GetUser (object providerUserKey) , qui prend le GUID de l'utilisateur, soit remplacer la méthode précédente et sa procédure stockée respective pour renvoyer la casse appropriée. nom d'utilisateur.

Vous pouvez également faire des appels consécutifs aux deux méthodes GetUser () différentes, mais vous perdez du temps.

Stumpled sur le même problème et essayé la solution ci-dessus = Le moyen le plus simple d’obtenir le bon boîtier:

var user = Membership.GetUser(userName.Text);
user = Membership.GetUser(user.ProviderUserKey);
var correctCasing = user.UserName;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top