0

今天早些时候,我在 vb.net 中询问了这个问题 debugger skips line,但我刚刚发现了一些关于我正在从事的项目的奇怪的事情(或者这对于 vb.net 来说是正常的)。我正在编辑 vb 文件,添加一些方法。

调试原始文件工作正常,我可以进入代码并逐行检查每一行,没有任何问题。现在,当我添加一些方法时,调试器的工作方式非常奇怪,请查看以下两个屏幕截图:

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

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

此外,当我将方法添加到文件中时,现在调试不会逐行进行,而是例如在第一行执行步骤,然后当我单击 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
4

1 回答 1

1

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

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

于 2012-09-20T18:22:41.687 回答