EDITAR Mi respuesta inicial era incorrecta. Intentando de nuevo ...
Técnicamente, como indica @Curt, una variable Shared
se comparte entre las instancias de la clase.
Sin embargo, con el código como está, es menos probable que el valor se comparta entre los usuarios, ya que se establece en la copia local de cada usuario del valor en su sesión en Page_Init
.
Hay un posible "condición de carrera", donde después de la variable compartida UserNumber
se ha inicializado en Page_Init
, y otro usuario hace una petición que actualiza el valor de esa variable de la sesión, el primer usuario será entonces ver del segundo usuario valor. es decir, los usuarios pueden ver los valores de otros usuarios para solicitudes simultáneas.
En su lugar, le recomiendo usar un ReadOnly
propiedad no compartida para obtener el valor de la sesión una vez:
Private mUserNumber As String
Public ReadOnly Property UserNumber As String
Get
If String.IsNullOrEmpty(mUserNumber) Then
mUserNumber = Session("UserNumber")
End If
Return mUserNumber
End Get
End Property
Este utiliza un patrón llamado "Lazy-carga", que utilizo en las propiedades de sólo lectura mucho en las páginas para mejorar el rendimiento y la legibilidad del código.
Sí; como variable 'Shared ', es accesible para todas las instancias ... por lo tanto, todos los usuarios de la aplicación que se ejecutan en el mismo proceso. –