将asp.net Membership-generated UserId插入自定义表(vb)

时间:2010-11-18 17:25:07

标签: asp.net sql-server vb.net asp.net-membership

我花了几个小时的时间试图找到答案,虽然整个网络都有教程,但它们对我来说都不起作用(或者我太难以理解他们告诉我的内容了。 ..)

无论如何,我正在使用Membership创建asp.net用户。我想要做的是将生成的UserId添加到我创建的自定义表中的列中,以将自定义表中的内容与在aspnet_Users中创建的用户链接。

以下是我为注册提交按钮提供的代码:

Private Sub submit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles submit.Click
    Dim connectionString As String = WebConfigurationManager.ConnectionStrings("edinsec").ConnectionString
    Dim createStatus As MembershipCreateStatus
    Membership.CreateUser(fname.Text, password.Text, email.Text, sq.Text, sa.Text, False, createStatus)

    ''#Something has to happen here!

    Dim insertSQL As String

    insertSQL = "INSERT INTO clients (UserId)"
    insertSQL &= "VALUES (@userId)"
    Using con As New SqlConnection(connectionString)
  Dim cmd As New SqlCommand(insertSQL, con)
  cmd.Parameters.AddWithValue("@firstname", firstname.Text)


  Try
      Try
    con.Open()
      Catch ex As SqlException
    MsgBox("Connection Problem - Please Retry Later", 65584, "Connection Error")
      End Try
      cmd.ExecuteNonQuery()
      MsgBox("Thank you for joining us - we will be in touch shortly.", 65600, "Join Up")
      Response.Redirect("Default.aspx")
  Catch Err As SqlException
      MsgBox("Error inserting record - please retry later.", 65584, "Insertion Error")
  End Try
  con.Close()
    End Using
End Sub

正如您所看到的,我正在尝试获取Membership-generated userid并将其插入到clients表中。我已经尝试了很多方法来获取UserId但没有工作。

会员资格可以创建用户,这只是我坚持使用的部分。

非常感谢任何帮助:)

2 个答案:

答案 0 :(得分:1)

我最后使用此代码管理它:

Dim userid As Guid = New Guid(Membership.GetUser(username.Text).ProviderUserKey.ToString())

...其中username.Text是用户名表单输入的内容,用户选择其用户名。

相关参数行是:

cmd.Parameters.Add("@UserId", g)

我收到关于我正在使用的方法被弃用的警告,但它至少有用!

答案 1 :(得分:0)

Membership.CreateUser返回MembershipUser对象。您可以从返回的对象中获取UserId。

MembershipUser user = Membership.CreateUser(...);
Guid userId = (Guid)user.ProviderUserKey;