2012-09-03 40 views
0

我使用VS2012與ASP.NET 4.5MySQL作爲我的數據庫提供者。 我現在正在代碼上得到一個指定的轉換錯誤,該代碼在一點上工作正常。 它是從我的Register.aspx頁面進行註冊驗證,代碼是根據asp.net網站教程改編的。指定的轉換錯誤

下面是代碼,錯誤是在Dim newUser as Guid

Protected Sub RegisterUser_CreatedUser(ByVal sender As Object, ByVal e As EventArgs) Handles RegisterUser.CreatedUser 
    FormsAuthentication.SetAuthCookie(RegisterUser.UserName, False) 


    Dim newUser As MembershipUser = Membership.GetUser(RegisterUser.UserName) 
    Dim newUserID As Guid = DirectCast(newUser.ProviderUserKey, Guid) 
    Dim urlBase As String = Request.Url.GetLeftPart(UriPartial.Authority) & Request.ApplicationPath 
    Dim verifyUrl As String = "VerifyNewUser.aspx?ID=" & newUserID.ToString() 
    Dim fullPath As String = urlBase & verifyUrl 
    Dim appPath As String = Request.PhysicalApplicationPath 

    Dim sr As New StreamReader(appPath & "EmailTemplates/VerifyUserAccount.txt") 
    Dim mailMessage As New MailMessage() 
    mailMessage.IsBodyHtml = True 
    mailMessage.From = New MailAddress("[email protected]") 
    mailMessage.To.Add(New MailAddress(RegisterUser.Email)) 
    mailMessage.CC.Add(New MailAddress("[email protected]")) 
    mailMessage.Subject = "New User Registration" 
    mailMessage.Body = sr.ReadToEnd 
    sr.Close() 

    mailMessage.Body = mailMessage.Body.Replace("<%UserName%>", RegisterUser.UserName) 
    mailMessage.Body = mailMessage.Body.Replace("<%VerificationUrl%>", fullPath) 

    //Set up the smtp for gmail to send the email 
    Dim mailClient As New SmtpClient() 
    With mailClient 
     .Port = 587 'try 465 if this doesn't work 
     .EnableSsl = True 
     .DeliveryMethod = SmtpDeliveryMethod.Network 
     .UseDefaultCredentials = False 
     .Credentials = New NetworkCredential(mailMessage.From.ToString(), "password") 
     .Host = "smtp.gmail.com" 
    End With 
    mailClient.Send(mailMessage) 

    Dim continueUrl As String = RegisterUser.ContinueDestinationPageUrl 
    If String.IsNullOrEmpty(continueUrl) Then 
     continueUrl = "~/" 
    End If 

    Response.Redirect(continueUrl) 
End Sub 
+0

4.5文檔的建議provideruserkey可能不be'a GUID實現自己的供應商。說這是爲SQL(大概是MS SQL)。根據你的錯誤,現在不是。調試的位或可能=新的Guid(newUser.ProviderUserKey.ToString()) –

+0

進一步探討發現,當使用MySQL作爲數據庫和提供者,你需要投下作爲Int32不是一個Guid – dinotom

回答

1

當你或任何人,你創建需要指定ProviderUserKey是否將是一個整數或GUID一個MembershipProvider。默認SqlMembershipProvider實現它作爲一個Guid,而默認MySqlMembershipProvider實現它作爲一個int。

你總是可以從默認的一個繼承和實現自己的版本ProviderUserKey

相關問題