Проблемы с членством в ASP.NET при регистрации - PullRequest
0 голосов
/ 27 января 2009

У меня тяжелые времена с этим членством.

ОК, это действительно странно. Я могу зарегистрировать пользователя. Я могу зарегистрироваться, я могу войти. Однако, когда я иду, чтобы зарегистрировать ДРУГОГО пользователя, пользователь не сохраняется в базе данных, и я получаю Сбой проверки учетных данных членства, когда пользователь пытается войти (я полагаю, потому что пользователь никогда не сохраняется).

Вот код, который я использую для сохранения нового пользователя.

На странице:

protected void btnRegister_Click(object sender, EventArgs e)
    {
        if (false == ValidatePage()) return;
        FormsAuthentication.SignOut();
        MembershipCreateStatus status;
        Data.User user = UserManager.CreateUser(txtEmail.Text.Trim(), txtPassword.Text.Trim(), out status);

        switch (status)
        {
            case MembershipCreateStatus.Success:
                UserManager.Save(user);
                break;
            default:
                lblMessage.Text = status.ToString();
                break;
        }

        Response.Redirect("~/login.aspx");
    }

метод CreateUser:

public static User CreateUser(string username, string password, out MembershipCreateStatus status)
    {
        using (TransactionScope transaction = new TransactionScope())
        {
            MembershipUser aspnetUser = Membership.CreateUser(username, password, username, null, null, true, out status);

            User hqUser = null;

            if (status == MembershipCreateStatus.Success)
            {
                hqUser = new User();

                //these properties are only for issues
                //that won't blow up.  They can be safely removed from the system.
                //the aspnet membership tables take care of this stuff for us.
                hqUser.LastLoginDate = DateTime.Now;
                hqUser.DateCreated = DateTime.Now;
                //end properites.

                hqUser.Email = username;
                hqUser.MembershipID = (Guid)aspnetUser.ProviderUserKey;
                Save(hqUser);
            }

            transaction.Complete();
            return hqUser;

}}

Дополнительный метод сохранения предназначен для сохранения пользователя в базе данных приложения. Пользователь не попадает в базу данных членов, хотя я знаю, что он умирает до этого.

Кто-нибудь видел что-нибудь очевидное, что сжигает меня? Спасибо!

Ответы [ 3 ]

2 голосов
/ 27 января 2009

Вы проверили, что это не проблема со сложностью пароля? Я знаю, что у меня были проблемы с этим в прошлом ...

1 голос
/ 27 января 2009

Вы перенаправляете страницу, прежде чем сможете увидеть выходные данные, если состояние не равно успеху.

Btw. может быть лучше унаследовать поставщика sqlmembership и расширить его своими собственными дополнительными вставками БД, по крайней мере, если вы не вставляете дополнительные данные. Или вы спрашиваете больше, чем материал по умолчанию при первом создании учетной записи?

Попробуйте, как этот код, и посмотрите значение enum в сообщении lblMessage

защищенный void btnRegister_Click (отправитель объекта, EventArgs e) {

      if (!ValidatePage()) return;

        FormsAuthentication.SignOut();
            MembershipCreateStatus status;
            Data.User user = UserManager.CreateUser(txtEmail.Text.Trim(), txtPassword.Text.Trim(), out status);
            switch (status) { 
        case MembershipCreateStatus.Success:
                            UserManager.Save(user);
            Response.Redirect("~/login.aspx");
                            break;
                    default:
                            lblMessage.Text = status.ToString();
                            break;
            }       

    }

grrgr, глупая разметка

Надеюсь, это поможет.

0 голосов
/ 27 января 2009

Мое первое предположение состоит в том, что ValidatePage() возвращает ложь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...