静态范围多用户ASP.NET Web应用程序中的变量

Man*_*aha 47 c# asp.net static

静态变量是否在用户会话中保留其值?

我有一个ASP.NET Web应用程序,我有两个按钮.一个用于设置静态变量值,另一个用于显示静态变量值.

namespace WebApplication1
{   

public partial class WebForm1 : System.Web.UI.Page
{
    public static int customerID;

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void ButtonSetCustomerID_Click(object sender, EventArgs e)
    {
        customerID = Convert.ToInt32(TextBox1.Text);
    }

    protected void ButtonGetCustomerID_Click(object sender, EventArgs e)
    {
        Label1.Text = Convert.ToString(customerID);
    }
}

}
Run Code Online (Sandbox Code Playgroud)

虽然这适用于单用户环境,但如果有两个用户同时从两台计算机登录,会发生什么情况,用户1将值设置为100,然后用户2将值设置为200.之后用户1调用"获取值"按钮.他认为什么是价值?

Ica*_*rus 71

静态变量是否在用户会话中保留其值?

是的,这就是为什么在Web应用程序中使用静态变量时应该非常小心的原因.您将在并发问题中运行,因为为请求提供服务的多个线程可以修改变量的值.

虽然这适用于单用户环境,但如果有两个用户同时从两台计算机登录,会发生什么情况,用户1将值设置为100,然后用户2将值设置为200.之后用户1调用"获取值"按钮.他认为什么是价值?

之后用户将看到200.


and*_*ndy 22

静态变量范围是应用程序级别.

如果你在静态变量中存储一些东西,那么你做错了.

如果一个用户保存数据,同时另一个用户访问同一页面,那么他也将获得相同的数据.因此,您可以将值存储在Sessions中.