Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 指定的强制转换错误_Asp.net_Login_Casting - Fatal编程技术网

Asp.net 指定的强制转换错误

Asp.net 指定的强制转换错误,asp.net,login,casting,Asp.net,Login,Casting,我正在使用VS2012和ASP.NET 4.5以及MySQL作为我的数据库提供程序。 我现在在代码上得到了一个指定的强制转换错误,该代码在某一点上运行良好。 它来自my Register.aspx页面,用于注册验证,代码改编自asp.net网站教程 这是代码,错误出现在Dim newUser as Guid行 Protected Sub RegisterUser_CreatedUser(ByVal sender As Object, ByVal e As EventArgs) Handles R

我正在使用VS2012和
ASP.NET 4.5
以及
MySQL
作为我的数据库提供程序。 我现在在代码上得到了一个指定的强制转换错误,该代码在某一点上运行良好。 它来自my 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("myacct@gmail.com")
    mailMessage.To.Add(New MailAddress(RegisterUser.Email))
    mailMessage.CC.Add(New MailAddress("myacct@gmail.com"))
    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
Protected Sub RegisterUser_CreatedUser(ByVal sender作为对象,ByVal e作为事件args)处理RegisterUser.CreatedUser
FormsAuthentication.SetAuthCookie(RegisterUser.UserName,False)
Dim newUser As MembershipUser=Membership.GetUser(RegisterUser.UserName)
作为Guid=DirectCast的Dim newUserID(newUser.ProviderUserKey,Guid)
Dim urlBase As String=Request.Url.GetLeftPart(UriPartial.Authority)&Request.ApplicationPath
Dim verifyUrl As String=“VerifyNewUser.aspx?ID=“&newUserID.ToString()
将完整路径设置为字符串=urlBase&verifyUrl
Dim appPath作为字符串=Request.PhysicalApplicationPath
Dim sr作为新的StreamReader(appPath和“EmailTemplates/VerifyUserAccount.txt”)
将mailMessage设置为新的mailMessage()
mailMessage.IsBodyHtml=True
mailMessage.From=新邮件地址(“myacct@gmail.com")
mailMessage.To.Add(新邮件地址(RegisterUser.Email))
mailMessage.CC.Add(新邮件地址(“myacct@gmail.com"))
mailMessage.Subject=“新用户注册”
mailMessage.Body=sr.ReadToEnd
高级关闭()
mailMessage.Body=mailMessage.Body.Replace(“,RegisterUser.UserName)
mailMessage.Body=mailMessage.Body.Replace(“,完整路径)
//为gmail设置smtp以发送电子邮件
Dim mailClient作为新的SmtpClient()
使用mailClient
.Port=587'如果不起作用,请尝试465
.EnableSsl=True
.DeliveryMethod=SmtpDeliveryMethod.Network
.UseDefaultCredentials=False
.Credentials=新的网络凭据(mailMessage.From.ToString(),“密码”)
.Host=“smtp.gmail.com”
以
mailClient.Send(mailMessage)
Dim continueUrl As String=RegisterUser.ContinueDestinationPageUrl
如果String.IsNullOrEmpty(continueUrl),则
continueUrl=“~/”
如果结束
响应.重定向(continueUrl)
端接头

当您或任何人创建
成员资格提供程序时
需要指定
提供程序用户密钥是整数还是Guid。默认的
SqlMembershipProvider
将其实现为Guid,而默认的
MySqlMembershipProvider
将其实现为int


通过继承其中一个默认值并实现自己版本的
ProviderUserKey

4.5文档建议ProviderUserKey可能不是“guid”,您始终可以实现自己的提供程序。表示它是针对sql的(大概是ms sql)。根据你的错误,现在还不是时候。调试的一点,或者可能=新的Guid(newUser.ProviderUserKey.ToString()),进一步的调查发现,当使用mysql作为数据库和提供程序时,您需要强制转换为Int32而不是Guid