vb.net调试器跳过调试行

时间:2012-09-20 17:39:37

标签: asp.net vb.net visual-studio-2010

今天早些时候我问了这个问题debugger in vb.net skips line,但我发现了一些关于我正在进行的项目的奇怪(或者对于vb.net来说可能是正常的)。 我正在编辑vb文件,添加一些方法。 调试原始文件工作正常,我可以逐步进入代码并逐行遍历每一行,没有任何问题。 现在,当我添加一些方法时,调试器的工作非常奇怪,请查看以下两个屏幕截图:

  1. 网站未启动 - >所有断点:http://gyazo.com/1077b7efbdb2b37174d5960cdff0bda5.png?1348160907

  2. 网站已启动 - >缺少第二行的断点:http://gyazo.com/3051303d6eb27af9ea13bd6e72b81a83.png?1348161507

  3. 此外,当我将方法添加到文件中时,现在调试不会逐行进行,但是例如第1行的步骤,然后当我单击f10时,它会进一步下面20行,它不会不要去代码中的下一行。 我是第一次编辑vb.net代码,我一直在使用c#,我不知道在编辑文件后是否需要修改一些东西,这样调试器才能正常工作。

    原始代码:

    Public Class Login
        Inherits System.Web.UI.Page
    
        Private m_objFranchiseInfo As New clsFranchiseInfo
    
        Private Sub Login_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
            Dim sEmail As String = Request.QueryString("email")
            Dim sPswd As String = Request.QueryString("password")
    
    
    
            If (Not String.IsNullOrWhiteSpace(sEmail) And Not String.IsNullOrWhiteSpace(sPswd)) Then
    
                If (sEmail.ToLower = "admin@mysite.com") Then
                    FormsAuthentication.SetAuthCookie(sEmail, False)
                    Session("UserName") = sEmail
                    Session("Password") = sPswd
                Else
    
                    Dim objService As New clsPropertyware
                    With objService
    
                        .UserName = sEmail
                        .Password = sPswd
                        .Initialize()
    
                        If .TestConnection = True Then
                            FormsAuthentication.SetAuthCookie(sEmail, False)
                            Session("UserName") = sEmail.ToLower
                            Session("Password") = sPswd
                            Session("OrgID") = .GetOrgID
    
    
                        Else
                            FormsAuthentication.SetAuthCookie("", True)
                            Session("UserName") = String.Empty
                            Session("Password") = String.Empty
                            Session("OrgID") = String.Empty
                        End If
    
                    End With
    
    
                End If
            Else
                FormsAuthentication.SignOut()
                Session("UserName") = String.Empty
                Session("Password") = String.Empty
                Session("OrgID") = String.Empty
            End If
        End Sub
    
    
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
            Dim sEmail As String = Request.QueryString("email")
            Dim sPswd As String = Request.QueryString("password")
    
            If (Not String.IsNullOrWhiteSpace(sEmail) And Not String.IsNullOrWhiteSpace(sPswd)) Then
    
                If (sEmail.ToLower = "admin@mysite.com") Then
                    FormsAuthentication.SetAuthCookie(sEmail, False)
                    Session("UserName") = sEmail
                    Session("Password") = sPswd
                Else
    
                    Dim objService As New clsPropertyware
                    With objService
    
                        .UserName = sEmail
                        .Password = sPswd
                        .Initialize()
    
                        If .TestConnection = True Then
                            FormsAuthentication.SetAuthCookie(sEmail, False)
                            Session("UserName") = sEmail.ToLower
                            Session("Password") = sPswd
                            Session("OrgID") = .GetOrgID
                            Response.Redirect("~/default.aspx")
                        Else
                            FormsAuthentication.SetAuthCookie("", True)
                            Session("UserName") = String.Empty
                            Session("Password") = String.Empty
                            Session("OrgID") = String.Empty
                        End If
    
                    End With
    
    
                End If
            Else
                FormsAuthentication.SignOut()
                Session("UserName") = String.Empty
                Session("Password") = String.Empty
                Session("OrgID") = String.Empty
            End If
        End Sub
    
    
    
        Private Sub LoginUser_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs) Handles LoginUser.Authenticate
    
            Dim szUserName As String = CType(LoginUser.FindControl("UserName"), TextBox).Text().Trim()
            Dim szPassword As String = CType(LoginUser.FindControl("Password"), TextBox).Text().Trim()
    
            If (szUserName.ToLower = "admin@mysite.com") Then
                e.Authenticated = True
                Session("UserName") = szUserName
                Session("Password") = szPassword
            Else
    
                Dim objService As New clsPropertyware
                With objService
    
                    .UserName = szUserName
                    .Password = szPassword
                    .Initialize()
    
                    If .TestConnection = True Then
                        e.Authenticated = True
                        Session("UserName") = szUserName.ToLower
                        Session("Password") = szPassword
                        Session("OrgID") = .GetOrgID
                    Else
                        e.Authenticated = False
                        Session("UserName") = String.Empty
                        Session("Password") = String.Empty
                        Session("OrgID") = String.Empty
                    End If
    
                End With
            End If
    
        End Sub
    
    
        Private Sub LoginUser_LoggedIn(ByVal sender As Object, ByVal e As System.EventArgs) Handles LoginUser.LoggedIn
    
            If (Session("UserName") = "admin@mysite.com") Then
                Response.Redirect("~/UploadValues.aspx")
            Else
    
                m_objFranchiseInfo.Clear()
                If (m_objFranchiseInfo.Load(Session("UserName")) = True) Then
                    Session("FranchiseAgent") = m_objFranchiseInfo.szAgent
                    Session("FranchiseAgent2") = m_objFranchiseInfo.szAgent2
                    Session("FranchiseAddress") = m_objFranchiseInfo.szAddress
                    Session("FranchiseCity") = m_objFranchiseInfo.szCity
                    Session("FranchiseState") = m_objFranchiseInfo.szState
                    Session("FranchiseZip") = m_objFranchiseInfo.szZip
                    Session("FranchisePhone") = m_objFranchiseInfo.szPhone
                    Session("FranchiseFax") = m_objFranchiseInfo.szFax
                    Session("FranchiseEmail") = m_objFranchiseInfo.szEmail
                Else
                    Response.Redirect("~\FranchiseInfo.aspx")
                End If
            End If
    
        End Sub
    End Class
    

    修改后的代码:

    Imports System.Security.Cryptography
    
    Public Class Login
        Inherits System.Web.UI.Page
    
        Private m_objFranchiseInfo As New clsFranchiseInfo
    
        Private Sub Login_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
            Dim sEmail As String = Request.QueryString("email")
            Dim sPswd As String = Request.QueryString("password")
    
    
    
            If (Not String.IsNullOrWhiteSpace(sEmail) And Not String.IsNullOrWhiteSpace(sPswd)) Then
    
                If (sEmail.ToLower = "admin@mysite.com") Then
                    FormsAuthentication.SetAuthCookie(sEmail, False)
                    Session("UserName") = sEmail
                    Session("Password") = sPswd
                Else
    
                    Dim objService As New clsPropertyware
                    With objService
    
                        .UserName = sEmail
                        .Password = sPswd
                        .Initialize()
    
                        If .TestConnection = True Then
                            FormsAuthentication.SetAuthCookie(sEmail, False)
                            Session("UserName") = sEmail.ToLower
                            Session("Password") = sPswd
                            Session("OrgID") = .GetOrgID
    
    
                        Else
                            FormsAuthentication.SetAuthCookie("", True)
                            Session("UserName") = String.Empty
                            Session("Password") = String.Empty
                            Session("OrgID") = String.Empty
                        End If
    
                    End With
    
    
                End If
            Else
                FormsAuthentication.SignOut()
                Session("UserName") = String.Empty
                Session("Password") = String.Empty
                Session("OrgID") = String.Empty
            End If
        End Sub
    
    
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
            Dim encryptedEmail As String = "myemail@yahoo.com"
            Dim decryptEmail As String = DecryptData("myemail@yahoo.com")
            Dim encrpytedPassword As String = "password"
    
    
    
    
            Dim sEmail As String = Request.QueryString("email")
            Dim sPswd As String = Request.QueryString("password")
    
            If (Not String.IsNullOrWhiteSpace(sEmail) And Not String.IsNullOrWhiteSpace(sPswd)) Then
    
                If (sEmail.ToLower = "admin@mysite.com") Then
                    FormsAuthentication.SetAuthCookie(sEmail, False)
                    Session("UserName") = sEmail
                    Session("Password") = sPswd
                Else
    
                    Dim objService As New clsPropertyware
                    With objService
    
                        .UserName = sEmail
                        .Password = sPswd
                        .Initialize()
    
                        If .TestConnection = True Then
                            FormsAuthentication.SetAuthCookie(sEmail, False)
                            Session("UserName") = sEmail.ToLower
                            Session("Password") = sPswd
                            Session("OrgID") = .GetOrgID
                            Response.Redirect("~/default.aspx")
                        Else
                            FormsAuthentication.SetAuthCookie("", True)
                            Session("UserName") = String.Empty
                            Session("Password") = String.Empty
                            Session("OrgID") = String.Empty
                        End If
    
                    End With
    
    
                End If
            Else
                FormsAuthentication.SignOut()
                Session("UserName") = String.Empty
                Session("Password") = String.Empty
                Session("OrgID") = String.Empty
            End If
        End Sub
    
    
    
        Private Sub LoginUser_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs) Handles LoginUser.Authenticate
    
            Dim szUserName As String = CType(LoginUser.FindControl("UserName"), TextBox).Text().Trim()
            Dim szPassword As String = CType(LoginUser.FindControl("Password"), TextBox).Text().Trim()
    
            If (szUserName.ToLower = "admin@mysite.com") Then
                e.Authenticated = True
                Session("UserName") = szUserName
                Session("Password") = szPassword
            Else
    
                Dim objService As New clsPropertyware
                With objService
    
                    .UserName = szUserName
                    .Password = szPassword
                    .Initialize()
    
                    If .TestConnection = True Then
                        e.Authenticated = True
                        Session("UserName") = szUserName.ToLower
                        Session("Password") = szPassword
                        Session("OrgID") = .GetOrgID
                    Else
                        e.Authenticated = False
                        Session("UserName") = String.Empty
                        Session("Password") = String.Empty
                        Session("OrgID") = String.Empty
                    End If
    
                End With
            End If
    
        End Sub
    
    
        Private Sub LoginUser_LoggedIn(ByVal sender As Object, ByVal e As System.EventArgs) Handles LoginUser.LoggedIn
    
            If (Session("UserName") = "admin@mysite.com") Then
                Response.Redirect("~/UploadValues.aspx")
            Else
    
                m_objFranchiseInfo.Clear()
                If (m_objFranchiseInfo.Load(Session("UserName")) = True) Then
                    Session("FranchiseAgent") = m_objFranchiseInfo.szAgent
                    Session("FranchiseAgent2") = m_objFranchiseInfo.szAgent2
                    Session("FranchiseAddress") = m_objFranchiseInfo.szAddress
                    Session("FranchiseCity") = m_objFranchiseInfo.szCity
                    Session("FranchiseState") = m_objFranchiseInfo.szState
                    Session("FranchiseZip") = m_objFranchiseInfo.szZip
                    Session("FranchisePhone") = m_objFranchiseInfo.szPhone
                    Session("FranchiseFax") = m_objFranchiseInfo.szFax
                    Session("FranchiseEmail") = m_objFranchiseInfo.szEmail
                Else
                    Response.Redirect("~\FranchiseInfo.aspx")
                End If
            End If
    
        End Sub
    
        Public Function DecryptData(
       ByVal encryptedtext As String) As String
    
            ' Convert the encrypted text string to a byte array. 
            Dim encryptedBytes() As Byte = Convert.FromBase64String(encryptedtext)
    
            ' Create the stream. 
            Dim ms As New System.IO.MemoryStream
            ' Create the decoder to write to the stream. 
            Dim decStream As New CryptoStream(ms,
                TripleDES.CreateDecryptor(),
                System.Security.Cryptography.CryptoStreamMode.Write)
    
            ' Use the crypto stream to write the byte array to the stream.
            decStream.Write(encryptedBytes, 0, encryptedBytes.Length)
            decStream.FlushFinalBlock()
    
            ' Convert the plaintext stream to a string. 
            Return System.Text.Encoding.Unicode.GetString(ms.ToArray)
        End Function
    
        Private Function TruncateHash(
        ByVal key As String,
        ByVal length As Integer) As Byte()
    
            Dim sha1 As New SHA1CryptoServiceProvider
    
            ' Hash the key. 
            Dim keyBytes() As Byte =
                System.Text.Encoding.Unicode.GetBytes(key)
            Dim hash() As Byte = sha1.ComputeHash(keyBytes)
    
            ' Truncate or pad the hash. 
            ReDim Preserve hash(length - 1)
            Return hash
        End Function
    
        Sub New(ByVal key As String)
            ' Initialize the crypto provider.
            TripleDes.Key = TruncateHash(key, TripleDes.KeySize \ 8)
            TripleDes.IV = TruncateHash("", TripleDes.BlockSize \ 8)
        End Sub
    
        Public Function EncryptData(
        ByVal plaintext As String) As String
    
            ' Convert the plaintext string to a byte array. 
            Dim plaintextBytes() As Byte =
                System.Text.Encoding.Unicode.GetBytes(plaintext)
    
            ' Create the stream. 
            Dim ms As New System.IO.MemoryStream
            ' Create the encoder to write to the stream. 
            Dim encStream As New CryptoStream(ms,
                TripleDes.CreateEncryptor(),
                System.Security.Cryptography.CryptoStreamMode.Write)
    
            ' Use the crypto stream to write the byte array to the stream.
            encStream.Write(plaintextBytes, 0, plaintextBytes.Length)
            encStream.FlushFinalBlock()
    
            ' Convert the encrypted stream to a printable string. 
            Return Convert.ToBase64String(ms.ToArray)
        End Function
    
    End Class
    

    欢迎任何帮助。 在此先感谢Laziale

1 个答案:

答案 0 :(得分:1)

如果您使用ASP.net开发服务器进行托管,我已经看到,即使Visual Studio已停止,该进程仍在执行代码时会发生这种情况。当您启动新的调试会话时,它会尝试跟踪两个会话。我认为当您点击停止按钮而不是关闭浏览器窗口并且存在长时间运行或异步进程时,可能会发生这种情况。

尝试右键单击任务栏中的ASP.net开发服务器图标,然后选择停止,然后开始调试。