I have a bizarre problem. I use a lot of session variables so I don’t have to pass it all back and forth every time a page does a postback. I have been doing this for years so I’m at a complete loss.
I have a file called SessionHandler.vb in the App_Code folder that has the following code:
Imports Microsoft.VisualBasic
Public Class SessionHandler
Private Shared _chgLinePkNum As String = "0"
Private Shared _chgStudentIDPk As String = "0"
Public Shared Property chgLinePkNum() As String
Get
' Check for null first
If (HttpContext.Current.Session(SessionHandler._chgLinePkNum) Is Nothing) Then
' Return an empty string if session variable is null.
Return "Nothing"
Else
Return HttpContext.Current.Session(SessionHandler._chgLinePkNum).ToString()
End If
End Get
Set(ByVal value As String)
If (value Is Nothing) Or (value = "") Then
HttpContext.Current.Session(SessionHandler._chgLinePkNum) = "Nothing"
Else
HttpContext.Current.Session(SessionHandler._chgLinePkNum) = value
End If
End Set
End Property
Public Shared Property chgStudentIDPk() As String
Get
' Check for null first
If (HttpContext.Current.Session(SessionHandler._chgStudentIDPk) Is Nothing) Then
' Return an empty string if session variable is null.
Return "Nothing"
Else
Return HttpContext.Current.Session(SessionHandler._chgStudentIDPk).ToString()
End If
End Get
Set(ByVal value As String)
If (value Is Nothing) Or (value = "") Then
HttpContext.Current.Session(SessionHandler._chgStudentIDPk) = "Nothing"
Else
HttpContext.Current.Session(SessionHandler._chgStudentIDPk) = value
End If
End Set
End Property
Simple enough… Then, in my code, I reference the properties by SessionHandler.chgLinePkNum. This block of code has LineItemNumber = 1 and StudentID = [the actual ID number].
If IsParking And checkbox.Checked = True Then
SessionHandler.chgLinePkNum = LineItemNumber
SessionHandler.chgStudentIDPk = StudentID
peParkingRegistration.Show()
End If
When the first line runs, chgLinePkNum is set to 1 as expected. For some strange reason, it is also setting chgStudentIDPk to 1. When the next line is run, it sets chgStudentIDPk to the correct StudentID number. The problem is, it also sets chgLinePkNum to the StudentID number.
I have run it line by line in the debugger and each property set function runs only when it is called. I just can’t figure out how “HttpContext.Current.Session(SessionHandler._chgLinePkNum) = value” is setting the value for chgStudentIDPk and vice versa.
Anything to do with these having the exact same value?