0

memebrship ユーザーを作成し、他のメソッドを呼び出してユーザーの他の情報を SQL DB に挿入する次のコードがあります。ユーザーが作成されています。情報は私のデータベースに入っています。すべてが正常に機能していますが、何らかの理由で、Literal0.text に成功メッセージを送信するのではなく、ユーザーが正常に作成された後でも、常に「この電子メール アドレスを持つユーザーが既に存在します。」と表示されます。コードが 2 回実行されないように、Session("Created") のチェックを追加しましたが、まだうまくいきません。正常に動作しますが、最後に間違ったメッセージが表示されるだけです。

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If Not Session("Created") = "True" Then
        Literal0.Text = ""
        Dim FName As String = FNameBox.Text.Replace("'", "*1*").Replace("""", "*2*").Replace(" ", "")
        Dim LName As String = LNameBox.Text.Replace("'", "*1*").Replace("""", "*2*").Replace(" ", "")
        Username = FName + "." + LName
        Dim SecretQ As String = "Please use the Contact Us page to request a reset password"
        Dim SecretA As String = "ergwergkqejfqeoufwqeofiheowfqpkoadmvnwo"
        Dim psw As Int32 = (TimeOfDay.Hour * TimeOfDay.Minute) * 863490
        Dim firstsix As String = psw.ToString().Substring(0, 6)
        password = FNameBox.Text.Replace("'", "*1*").Replace("""", "*2*").Replace(" ", "") + firstsix + "!"
        Dim createStatus As MembershipCreateStatus
        Dim newUser As MembershipUser = _
        Membership.CreateUser(Username, password, _
        Email.Text, SecretQ, _
        SecretA, True, _
        createStatus)
        Select Case createStatus
            Case MembershipCreateStatus.Success
                Session("Created") = "True"
                If Not String.IsNullOrEmpty(BlogSettings.Instance.SelfRegistrationInitialRole) Then
                    Dim role As String = Roles.GetAllRoles().FirstOrDefault(Function(r) r.Equals(BlogSettings.Instance.SelfRegistrationInitialRole, StringComparison.OrdinalIgnoreCase))
                    If Not String.IsNullOrEmpty(role) Then
                        Roles.AddUsersToRoles(New String() {Username}, New String() {role})
                    End If
                End If
                Dim pf = AuthorProfile.GetProfile(Username)
                pf = New AuthorProfile(Username)
                pf.DisplayName = Username
                pf.EmailAddress = Email.Text
                pf.FirstName = FNameBox.Text.Replace("'", "*1*").Replace("""", "*2*").Replace(" ", "")
                pf.LastName = LNameBox.Text.Replace("'", "*1*").Replace("""", "*2*").Replace(" ", "")
                pf.[Private] = True
                pf.Save()
                Literal0.Text = ""
                AddUser()
                Exit Select
            Case MembershipCreateStatus.DuplicateUserName
                Literal0.Text = "There is already a user with this username."
                Exit Select
            Case MembershipCreateStatus.DuplicateEmail
                Literal0.Text = "There is already a user with this email address."
                Exit Select
            Case MembershipCreateStatus.InvalidEmail
                Literal0.Text = "There email address you provided in invalid."
                Exit Select
            Case MembershipCreateStatus.InvalidAnswer
                Literal0.Text = "There security answer was invalid."
                Exit Select
            Case MembershipCreateStatus.InvalidPassword
                Literal0.Text = "The password you provided is invalid. It must be seven characters long and have at least one non-alphanumeric character."
                Exit Select
            Case Else
                Literal0.Text = "There was an unknown error; the user account was NOT created."
                Exit Select
        End Select
    End If
End Sub
4

1 に答える 1

0

以下の部分からコードを確認することをお勧めします。

アプリケーションにいくつかのブレーク ポイントを作成してください。デバッグ ポイントが次のケースに移動するたびに確認する必要があります。

Case MembershipCreateStatus.DuplicateEmail
                Literal0.Text = "There is already a user with this email address."
                Exit Select

メールが DataTable に存在しないことを確認してください。

MembershipCreateStatus の詳細については、以下のリンクを参照してください。

http://msdn.microsoft.com/en-us/library/system.web.security.membershipcreatestatus.aspx

お役に立てば幸いです。

于 2013-11-14T10:20:22.243 に答える