Почему вы используете статический класс (Module) в качестве хранилища для ваших объектов Session? Статика означает широкое применение. mUserSession
также является статическим, поэтому все пользователи используют один и тот же сеанс. На самом деле линии
mUserSession = value
и
mUserSession = HttpContext.Current.Session("user")
в getter / setter перезаписывает его для всех пользователей.
Вы можете обернуть объект Session в свой собственный класс просто для упрощения:
Например:
Public Class MySession
' private constructor
Private Sub New()
End Sub
' Gets the current session.
Public Shared ReadOnly Property Current() As MySession
Get
Dim session As MySession = DirectCast(HttpContext.Current.Session("__MySession__"), MySession)
If session Is Nothing Then
session = New MySession()
HttpContext.Current.Session("__MySession__") = session
End If
Return session
End Get
End Property
' **** add your session properties here, e.g like this:
Public Property MyID() As Guid
Get
Return m_ID
End Get
Set(value As Guid)
m_ID = value
End Set
End Property
Private m_ID As Guid
Public Property MyDate() As DateTime
Get
Return m_MyDate
End Get
Set(value As DateTime)
m_MyDate = Value
End Set
End Property
Private m_MyDate As DateTime
End Class
Примечание : свойство Current
также является общим / статическим, но разница в том, что я возвращаю HttpContext.Current.Session
, тогда как вы возвращаете один / общий экземпляр.