今天早些时候,我在 vb.net 中询问了这个问题 debugger skips line,但我刚刚发现了一些关于我正在从事的项目的奇怪的事情(或者这对于 vb.net 来说是正常的)。我正在编辑 vb 文件,添加一些方法。
调试原始文件工作正常,我可以进入代码并逐行检查每一行,没有任何问题。现在,当我添加一些方法时,调试器的工作方式非常奇怪,请查看以下两个屏幕截图:
网站未启动->所有断点:http ://gyazo.com/1077b7efbdb2b37174d5960cdff0bda5.png?1348160907
网站已启动 -> 缺少第 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