【问题标题】:asp.net sessions variables overridingasp.net 会话变量覆盖
【发布时间】:2014-01-27 17:24:59
【问题描述】:

我在我的 asp.net 应用程序中有此代码,在按下按钮后,它会创建具有整数值的会话变量并重定向到不同的页面。 ID 变量是 mysql 数据库 ID 列中的最大数字,使用不同的方法检索它。

int ID;

protected void Submit_Click(object sender, EventArgs e)
    { 
        ID=ID+1
        Session["ID"]=ID; 
        Response.Redirect("~/NextPage.aspx");
    }

如果两个不同的用户按下此按钮会发生什么?我的意思是第一个用户按下 id=5 的按钮,1 秒后第二个用户按下 id=6 的按钮。第一个用户能否获得 ID=5 或变量为他的 ID=6?

用户使用不同的电脑...

【问题讨论】:

  • 测试一下就知道了。 Session 是服务器上特定于用户的跟踪,因此一个用户会话中的值不应影响另一用户会话中的值。
  • 你在哪里设置“ID”的值?来自用户的会话?
  • @David 我无法测试它,因为我只在 Visual Studio 中运行这个应用程序......
  • @Kevin Brechbühl 不,它从不同的类简单的返回方法这个方法简单地检索 Max(id) 'code' command.CommandText = "SELECT MAX(id) FROM ParticipantInfo;"; ID = (int)command.ExecuteScalar();
  • @EimantasBaigys:你当然可以测试它。运行应用程序,作为一个用户从一台机器连接到它,另一个用户从另一台机器连接到它(或同一台机器上的不同 Web 浏览器)。这是一个 Web 应用程序,它对任何向它提出请求的人开放。

标签: asp.net


【解决方案1】:

会话是基于用户的。请参阅MSDN 了解更多信息。

所以在你的情况下,没问题:第一个用户会得到ID=5,第二个用户会得到自己增加的ID。如果您的数据库 MAX(id) 在两个用户请求之间没有更改,则两个用户将在他们的会话中收到相同的 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-29
    • 2021-02-25
    • 2013-05-17
    • 2019-04-20
    • 2018-04-30
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    相关资源
    最近更新 更多