我花了几个小时的时间试图找到答案,虽然整个网络都有教程,但它们对我来说都不起作用(或者我太难以理解他们告诉我的内容了。 ..)
无论如何,我正在使用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但没有工作。
会员资格可以创建用户,这只是我坚持使用的部分。
非常感谢任何帮助:)
答案 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;