今日の初めに、vb.net のデバッガーでこの質問をしましたが、行をスキップしましたが、私が取り組んでいるプロジェクトについて奇妙なこと (または、vb.net では通常のことかもしれません) を見つけました。いくつかのメソッドを追加して、vb ファイルを編集しています。
元のファイルのデバッグは正常に機能しています。コードにステップ インして、各行を 1 行ずつ問題なく確認できます。いくつかのメソッドを追加すると、デバッガーは非常に奇妙に動作します。次の 2 つのスクリーンショットを確認してください。
Web サイトが開始されていない -> すべてのブレークポイントが配置されている: http://gyazo.com/1077b7efbdb2b37174d5960cdff0bda5.png?1348160907
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