【问题标题】:ASP.net Usercontrol caching viewstate across users?ASP.net Usercontrol 跨用户缓存视图状态?
【发布时间】:2010-05-25 22:52:31
【问题描述】:

我有一个带有 asp:textbox 控件的用户控件,它也执行回发。如果两个由不同会话变量标识的用户在同一秒内回发页面,则一个用户将在文本框中看到另一个用户的视图状态值。我已经通过将文本框、会话变量和 cookie 设置为相同的值(标识用户的相同值)并在所有三个都不匹配时写入日志来验证会发生这种情况。文本框的值是作为其他用户的值记录的值。

ASP.net 3.5、IIS 6

有没有人遇到过这个问题。

【问题讨论】:

  • 您能发布一小段代码来说明这一点吗? viewstate 在回发时实际上是作为隐藏变量传递的,因此问题可能出在代码的其他地方。

标签: asp.net


【解决方案1】:

UserControl 本身不应在用户之间缓存任何内容。您必须自己对 ViewState 执行某些操作才能导致此问题 - 可能在较低级别,例如将视图状态保存到数据库时(如果您有自定义代码)。您必须发布所有相关代码以供任何人找出问题所在。

【讨论】:

  • 我可以用相关代码再问一遍吗?我是这个网站的新手。我知道我的代码没有修改视图状态,其中涉及的唯一第三方控件是 Telerik 的 RadTabStrip。我知道.Net 框架在设计上不应该这样做,但我希望也许有人已经谈论过这个并且我的谷歌技能只是缺乏。我觉得奇怪的是,它只发生在一秒钟内的事务时。
  • 你可以编辑这个问题来添加代码。某处的某些代码可能使用时间戳作为缓存键,具有第二个分辨率。
【解决方案2】:

等式中是否涉及代理服务器?我已经看到代理服务器正在为其他用户提供缓存页面的这种确切症状。

【讨论】:

  • 有趣的是,您应该提到...在 .com 革命的一开始,我们的主要竞争对手比我们早一个月左右推出了他们的 eC 网站。当然,我们直接到该站点进行了试用,并出于类似的原因最终“共享”了一个购物车(我们共享了办公室 IP,他们使用该 IP 作为会话的一部分)。那是 1997 年。你最近观察到类似的事情吗?
  • 几年前访问客户多站点网络上的内部 Web 应用程序。他们在站点之间使用代理来节省 WAN 带宽。
  • 不,不涉及代理服务器。我知道这不应该发生,并且一切顺利,直到两个用户在不到 1000 毫秒的时间内回发。所有标准 .net 服务器控件和 RadTabStrip。
猜你喜欢
  • 2014-12-22
  • 2013-03-30
  • 2012-04-19
  • 2012-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多