首页 > 解决方案 > 我的 aspx 注册页面的代码不起作用

问题描述

您好,我的注册页面的以下代码不起作用。当我执行它时,它会刷新并保持在同一页面中。但它应该重定向到一个名为 message.aspx 的页面。注册命令的工作方式如下,尝试注册的人在组合框中写入他们的信息,然后一旦他们完成,他们单击按钮开始,这将保存他们的所有信息,然后使用它来个性化 message.aspx 页面,此人将收到一个电子邮件。

这是代码:

    Private Sub cmdRegister_Click(sender As Object, e As System.EventArgs) Handles cmdRegister.Click
    Dim status As MembershipCreateStatus
    Dim organization As New Org
    Dim employee As New Employee
    Dim description As New Description(25)
    Dim userMembership As MembershipUser
    Dim stringBuilder As New StringBuilder

    Try
        Membership.CreateUser( _
            txtUserName.Text, _
            txtPassword.Text, _
            txtEmail.Text, _
            "question", _
            "answer", _
            True, _
            status)

        If status.ToString = "Success" Then
            organization.GSTRate = 1
            organization.QSTRate = 1
            organization.AccountStatus = 2
            organization.Name = txtOrg.Text
            organization.Active = 1
            organization.OrgTypeID = cboType.SelectedValue
            organization.Create()
            organization = Nothing
            organization = New Org(txtOrg.Text)

            employee.Username = txtUserName.Text
            employee.OrgID = organization.ID

            employee.FirstName = txtFName.Text
            employee.LastName = txtLName.Text
            employee.Title = txtTitle.Text
            employee.Username = txtUserName.Text
            employee.IsAdmin = True
            employee.IsSupervisor = True
            employee.IsAccountant = False
            employee.IsAdvalorem = True
            employee.Email = txtEmail.Text
            employee.Phone = ""

            employee.Create()

            Roles.AddUserToRole(employee.Username, "Admin")

            userMembership = Membership.GetUser(txtUserName.Text)

            stringBuilder.Append(description.EnglishDescription)
            stringBuilder.Replace("(name)", employee.FirstName & " " & employee.LastName)
            stringBuilder.Replace("(OrgName)", organization.Name)
            stringBuilder.Replace("(username)", employee.Username)
            stringBuilder.Replace("you must activate your account", "you must <a href='https://www.advataxes.ca/login.aspx?action=activate&id=" + userMembership.ProviderUserKey.ToString + "&username=" + userMembership.UserName + "'>activate your account</a>")

            SendEmail(userMembership.Email, "Advataxes: Account created ", stringBuilder.ToString, Session("language"))
            Session("NewUserEmail") = userMembership.Email

            Response.Redirect("message.aspx?id=364")
        Else
            lblInvalidUserName.Visible = True
            If status.ToString = "DuplicateUserName" Then lblInvalidUserName.Text = "Username already exists"
        End If

    Catch ex As MembershipCreateUserException
        MsgBox(GetErrorMessage(ex.StatusCode))

    Catch ex As HttpException
        MsgBox(ex.Message)

    Finally
        userMembership = Nothing
        organization = Nothing
        employee = Nothing
        description = Nothing
    End Try
End Sub

标签: asp.netvb.netwebforms

解决方案


查看您的代码,我怀疑代码执行未成功到达该 Response.Redirect("message.aspx?id=364")行,并且由于异常,流程跳转到 catch block/

我能想到的两种可能:

  1. 如果未配置 smtp,则在 SendEmail 方法中引发异常
  2. Membership.CreateUser由于不正确的数据库连接字符串而失败

我建议您在方法中放置一个断点cmdRegister_Click并单步执行代码。


推荐阅读