-1

このメンバーシップの件で苦労しています。

わかりました、それで、それは本当に奇妙です。ユーザー登録できます。登録できます、ログインできます。ただし、別のユーザーを登録しようとすると、ユーザーはデータベースに保存されず、ユーザーがログインしようとすると、メンバーシップ資格情報の検証に失敗したイベントが発生します (ユーザーが保存されていないためだと思います)。

これは、新しいユーザーを保存するために使用しているコードです。

ページ上:

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;

}}

追加の保存方法は、ユーザーをアプリのデータベースに保存するためのものです。ただし、ユーザーはメンバーシップデータベースにアクセスしていないため、その前に死んでいることがわかります。

私を燃やしている明らかな何かを見た人はいますか?ありがとう!

4

3 に答える 3

2

Have you checked to see this is not a problem with password complexity? I know I have had issues with this in the past...

于 2009-01-26T21:34:12.287 に答える
1

ステータスが成功と等しくない場合、出力が表示される前にページをリダイレクトします。

ところで。少なくとも追加のデータを挿入しない場合は、sqlmembershipプロバイダーを継承し、独自の追加のdb挿入で拡張する方がよい場合があります。または、アカウントの最初の作成時にデフォルト以外のものを要求していますか?

このコードのように試して、列挙型の値がlblMessageにあるかどうかを確認してください

protected void btnRegister_Click(object sender、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、愚かなマークアップのこと

お役に立てれば。

于 2009-01-26T22:34:43.960 に答える
0

私の最初の推測は、ValidatePage()falseを返すことです。

于 2009-01-26T21:26:47.217 に答える