System.Web.HttpCookie无法转换为Integer

时间:2014-03-10 15:47:49

标签: vb.net visual-studio-2010

我可以获取登录用户ID,但是当我尝试将cookie传递给查询时,我收到上述错误。我该如何转换价值?在表中,值为(d606e50f-0a5c-42d6-a8eb-4219465e8a5e)

        Dim myObject As MembershipUser = Membership.GetUser()
        Dim UserId As String = myObject.ProviderUserKey.ToString()

        Dim cookieUser As HttpCookie = New HttpCookie("UserId")
        cookieUser.Value = UserId.ToString()
        Response.Cookies.Add(cookieUser)

        Dim DS As DataSet

        DS = U.RunQuery("SELECT [FirstName], [LastName], [Email], [Phone] from aspnet_Users Where @UserId = "(cookieUser))

    FirstNameTextBox.Text = DS.Tables(0).Rows(0)("FirstName")
    LastNameTextBox.Text = DS.Tables(0).Rows(0)("LastName")
    EmailTextBox.Text = DS.Tables(0).Rows(0)("Email")
    PhoneTextBox.Text = DS.Tables(0).Rows(0)("Phone")

谢谢!

1 个答案:

答案 0 :(得分:0)

问题如下

UserId = "(cookieUser)

VB.Net将其视为字符串常量,后跟(value),它将其视为字符串的索引。因此,它试图将cookieUser解释为Integer并失败。看起来你正在尝试在这里连接字符串,如果是这样,请执行以下操作

UserId = " & cookieUser

请注意,这似乎打开了您的SQL注入攻击。使用查询构建器并清理输入比使用原始字符串连接构建SQL查询要好得多