Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bamos

CreateUser MembershipUser retorna null

Recommended Posts

Olá pessoal, já perdi quase o dis todo para uma tarefa que parece simples mas não está funcionando.

Estou implementando Membership na minha aplicação que já tem a estrutura pronta, então não quero utilizar o "CreateUserWizard", pois tenho campos que são de outras tabelas do banco da aplicação e eu não quero mexer na interface pronta. A única coisa qu eeu preciso fazer é inserir um usuário via código, mas sempre está retornando null sem dar nenhum erro.

 

Estou fazendo da seguinte maneira,

 

Eu implementei a classe SqlMembershipProvider porque eu customizei algumas coisas como "Password History", então precisei dar um override no método CreateUser desta classe para isso. O código está assim:

 

/***PÁGINA INSERIR USUÁRIO (aspx)****/

 

StrykerCustomMembershipProvider customProvider = new StrykerCustomMembershipProvider();
MembershipUser mu;
MembershipCreateStatus status;

mu = customProvider.CreateUser(txtLogin.Text, txtSenha.Text, txtEmail.Text, "", "", true, null, out status);


/*****CustomSQLMembershipProvider*******/

public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
        {
            MembershipUser mu;
            
            mu = base.CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status);

            if (status != MembershipCreateStatus.Success)
                return mu;

            //Only insert the password row if the user was created
            try
            {
                InsertHistoryRow(username, password);
                return mu;
            }
            catch
            {
                //Attempt to cleanup after a creation failure
                base.DeleteUser(username, true);
                status = MembershipCreateStatus.ProviderError;
                return null;
            }
        }
Este método base.CreateUser(...) sempre retorna null, não sei porque! Deixando claro que eu estou passando valor null para o "ProviderUserKey", da mesma forma que o wizard faz.

 

Espero que alguém possa me ajudar, abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

try
            {
                InsertHistoryRow(username, password);
                return mu;
            }
            catch
            {
                //Attempt to cleanup after a creation failure
                base.DeleteUser(username, true);
                status = MembershipCreateStatus.ProviderError;
                return null;
            }

Da uma olhada no seu código, olha o return null dentro do catch.

Comenta o try, catch que conseguirá ver o erro.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, primeiramente obrigado pela resposta!

 

Eu fiz isso, mas o problema é que quando entra no Try,Catch o "mu" já está null.

Eu debuguei a execução de:

 

mu = base.CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status)

 

e quando pego o valor de mu ele já devolve null. Executa até rapido, parece que nem acessa o banco de dados, mas também não dá erro nenhum.

Eu só consigo utilizar este metodo override quando eu chamo ele à partir do "CreateUserWizard".

Pode ser que tenha mais alguma coisa que deve ser feito para este meu caso e eu não estou sabendo.

 

Obrigado!

 

 

 

try
            {
                InsertHistoryRow(username, password);
                return mu;
            }
            catch
            {
                //Attempt to cleanup after a creation failure
                base.DeleteUser(username, true);
                status = MembershipCreateStatus.ProviderError;
                return null;
            }

Da uma olhada no seu código, olha o return null dentro do catch.

Comenta o try, catch que conseguirá ver o erro.

 

Abraços...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.