用户之间共享的公共共享变量?

Bug*_*ver 5 vb.net asp.net

我已经接管了网站的维护(ASP.NET VB),在一个特定的页面上,我注意到了下面的代码

Inherits System.Web.UI.Page

Public Shared UserNumber As String

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

    UserNumber = Session("UserNumber")

    ...

End Sub
Run Code Online (Sandbox Code Playgroud)

我的问题是变量UserNumber是否可以由当前用户以外的任何其他用户访问或更改?

非常感谢

Cur*_*urt 9

Shared变量是相同的一个static在C#变量.

这些可以在所有实例之间共享,因此不同的用户将共享相同的变量.

查看变量名称,我认为您需要删除它 Shared


您正在将Session变量值应用于Shared Stringon Page_Init.

因此,每次用户加载页面时,其会话变量将覆盖当前值.


如果您不在此类之外使用此变量,那么我建议将其更改为:

Protected UserNumber As String
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,在ASP.NET中讨论静态和实例时,基本上每个请求都由不同的Thread处理.但事实上事情更复杂:http://www.codeproject.com/Articles/38501/Multi-Threading-in-ASP-NET (2认同)