0

今日の初めに、vb.net のデバッガーでこの質問をしましたが、行をスキップしましたが、私が取り組んでいるプロジェクトについて奇妙なこと (または、vb.net では通常のことかもしれません) を見つけました。いくつかのメソッドを追加して、vb ファイルを編集しています。

元のファイルのデバッグは正常に機能しています。コードにステップ インして、各行を 1 行ずつ問題なく確認できます。いくつかのメソッドを追加すると、デバッガーは非常に奇妙に動作します。次の 2 つのスクリーンショットを確認してください。

  1. Web サイトが開始されていない -> すべてのブレークポイントが配置されている: http://gyazo.com/1077b7efbdb2b37174d5960cdff0bda5.png?1348160907

  2. Web サイトが開始されました -> 2 行目のブレークポイントがありません: http://gyazo.com/3051303d6eb27af9ea13bd6e72b81a83.png?1348161507

さらに、メソッドをファイルに追加したところ、デバッグが行ごとに進まなくなりましたが、たとえば 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
4

1 に答える 1

1

ASP.net 開発サーバーを使用してホストしている場合、Visual Studio が停止しているにもかかわらず、そのプロセスがまだコードを実行しているときに、この問題が発生するのを見てきました。新しいデバッグ セッションを開始すると、両方のセッションを追跡しようとします。これは、ブラウザ ウィンドウを閉じるのではなく、停止ボタンを押したときに発生する可能性があり、実行時間の長いプロセスまたは非同期プロセスがあると考えられます。

タスクバーの ASP.net 開発サーバー アイコンを右クリックして [停止] を選択し、デバッグを開始してください。

于 2012-09-20T18:22:41.687 に答える