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

我有一个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);
    }
}

}

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

推荐答案

静电变量是否在用户会话中保留它们的值?

是的,这就是为什么在web应用程序中使用静态变量时应该非常小心的原因.由于为请求提供服务的多个线程可以修改变量的值,因此会出现并发问题.

虽然这在单用户环境中有效,但如果存在

之后用户将看到200.

Asp.net相关问答推荐

实体框架核心:DBCommand执行得更快,但总时间要慢10倍

无法为媒体类型application/x-www-form-urlencoded生成样本

ASP .Net Web API 将图像下载为二进制

静态字段与会话变量

使用实体框架从存储过程中获取数据

部署后 ASP.Net Core Identity 登录状态丢失

从 RowDataBound 事件的 gridview 从单元格中获取值

如何从 URI 中删除 PROTOCOL

如何解决 Kerberos 双跳问题?

如何设置 CSS 切换器

如何在 ASP.NET 页面中以编程方式生成 401 错误

为 ASP.NET Core MVC 显示 404 Not Found 页面

GMT 和 UTC 一样吗?

*.csproj 中的 usevshostingprocess 是什么?

如何将数据集转换为数据表

如何在 ASP.Net Gridview 中添加确认删除选项?

在c#中显示带有换行符的标签文本

获取 Application_Start 中的当前应用程序物理路径

ASP.NET MVC2/3 中runAllManagedModulesForAllRequests的正确用法是什么?

如何使用实体框架执行原始 SQL 查询而无需使用模型?