0

在我的网络应用程序中,我们有学生列表和员工登录。当多个员工登录并尝试编辑两个不同的学生详细信息时,当第一个用户打开页面并且第二个用户打开页面第二个都尝试更新两个不同的学生详细信息时,在更新时,第一个用户数据不会得到更新,而第二个用户数据更新。当检查断点时,当时在第一个用户更新时,它正在获取第二个用户打开的详细信息的学生 ID。尝试使用 Lock 但在它可以进入存储过程之前,值正在改变。任何帮助表示赞赏。

4

2 回答 2

3

您所描述的内容听起来就像您的代码中处理这些数据的一个(或多个)错误。

这里最常见的错误是使用static成员来保存实际上是每个请求的数据。static表示“每个应用程序域”,因此所有请求共享相同的字段。基本上:不要那样做。

发现代码使用静态作为一种机制来避免在不同地方之间传递数据的情况并不少见——因为它可以从无处获得。这仍然非常不恰当地使用它。它在开发机器上似乎可以正常工作,因为您通常在开发机器上只有一个并发用户。大多数人想要一个可以扩展到多个用户的网站。

搜索任何静态成员。如果您发现任何(除了在执行期间不会更改的配置值),那么它们可能是错误的。

您还可以通过不恰当地使用缓存或应用程序状态来实现相同的错误。

于 2013-05-26T08:34:15.407 回答
0

我认为您正在使用静态变量/字段或在两个相邻选项卡中打开两个学生信息编辑模式并在 Sessions 中保存编辑 studentId。
当您在新选项卡中打开第二个用户时,第一个学生 id 会被第二个用户覆盖,即使您返回学生一个选项卡并更新(执行提交详细信息),它也会为第二个用户更新。

您可以通过使用或隐藏字段来避免此类问题,ViewState["StudentID"]因为它们的范围在页面内。

于 2013-05-26T08:50:33.317 回答