Pergunta

Estou recebendo o nome de usuário na URL para blah.com/kevinuk.

Eu quero algum conteúdo na página para dizer KevinUK que é o que está armazenado na tabela de adesão, mas quando eu faço o seguinte, ele retorna o mesmo invólucro como o que a entrada era.

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

Como faço para usar um nome de usuário em minúsculas como parâmetro e retornar o valor do banco de dados com a caixa correta?

Foi útil?

Solução

Não é claro qual provedor de associação que você está usando, mas você pode facilmente descer do que e substituir o método GetUser.

Crie uma classe que classe herdada da classe MembershipProvider.

public class MyMembershipProvider : MembershipProvider

{

    public MyMembershipProvider()

    {

        //

        // TODO: Add constructor logic here

        //

    }

}

Substituir o método getUser.

public override MembershipUser GetUser(string username, bool userIsOnline)

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

}

Finalmente atualizar a configuração de internet para usar seu novo provedor:

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

Alguns exemplos:

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

Outras dicas

Infelizmente, o método Membership.GetUser(string username) simplesmente define nome de usuário do MembershipUser ao valor do parâmetro passado. Para chegar a caixa correta, você nem precisa de uso Membership.GetUser(object providerUserKey), que leva GUID do usuário, ou substituir o antigo método e seu respectivo procedimento armazenado para retornar o nome de usuário devidamente encaixotado.

Ou, você poderia simplesmente fazer chamadas back-to-back para os dois métodos GetUser() diferentes, mas isso é muito desperdício.

stumpled sobre o mesmo assunto e tentou acima solução = maneira mais fácil de conseguir casing correto:

var user = Membership.GetUser(userName.Text);
user = Membership.GetUser(user.ProviderUserKey);
var correctCasing = user.UserName;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top