我们在会话中存储两个对象。不知何故,来自另一个用户的一个对象被加载到另一个用户的会话中。用户应该没有访问此特定数据的权限,当他们看到它时,他们就知道出了很大的问题。
我们有提交给他的数据的可视证据,除非会议弄混了,否则肯定不可能发生。这是一个非常可怕的情况,我们不能弄清楚(我们不能复制它)。对于我们来说,唯一的答案就是指责ASP.NET StateServer混淆了会话变量,这是完全不可接受的,并将我们置于不利的境地。
我们的应用程序是运行在带有IIS6的Windows Server2003上的ASP.NET 2.0应用程序,使用StateServer cookieless="false"
会话模式和FormsAuthentication。
其他人也有这个问题吗?我们如何解决这个问题呢?
发布于 2009-10-30 05:38:37
我们在我以前的公司遇到了这个问题,花了3周的时间进行调试。ASP.NET为用户提供了另一个用户的会话状态。在调试环境中复制它确实是不可能的。
当我们发现它只是web.config中的一些东西时,修复了它。我没有完全记住它,所以我花了一些时间谷歌。我认为这个问题与输出缓存有关。请看这篇“会话和输出缓存”下的文章。
http://download.microsoft.com/download/3/a/7/3a7fa450-1f33-41f7-9e6d-3aa95b5a6aea/MSDNMagazineJuly2006en-us.chm (这篇文章的标题是Jeff Prosise在2006年7月的MSDN杂志上发表的文章《避免这10个常见的ASP.NET陷阱,让网站运行得顺畅》)
如果这听起来像您的场景,那么修复方法可能只是禁用web.config中的enableKernelOutputCache选项。
祝好运。
发布于 2009-10-30 04:20:01
首先在你自己的代码中寻找bugs -这是目前为止最有可能的解释。例如使用静态字段或诸如用于用户专用数据的ASP.NET高速缓存的其它共享存储器。
发布于 2009-10-30 04:32:33
它发生了多少次?您是否检查了使用浏览器返回的用户或使用会话Did互相发送链接的用户?
检查State Server错误的一种方法是切换到另一个会话管理器,如果可以或使用SQL Server,则回退到in-proc,但最好先找到一种方法来重现该错误,以便您可以对其进行测试。
https://stackoverflow.com/questions/1646274
复制相似问题