-->

ASP.NET会话混淆使用的StateServer(吓人!)(ASP.NET Session Mix

2019-09-02 09:15发布

我们存储在会话两个对象。 不知何故,从另一个用户的对象之一得到了加载到不同用户的会话。 用户应该有这种特定的数据无法获得,并且只要他们看到它,他们知道什么是非常错误的。

我们呈献给他的数据的视觉证明, 肯定没有办法就可能已经发生,除非会议搞混了。 这是一个非常可怕的情况是我们无法弄清楚(我们不能复制)。 对我们来说,唯一的答案是难辞其咎ASP.NET的StateServer混合会话变量了,这是完全不能接受的,并让我们处于不利位置。

我们的应用程序与IIS6的Windows Server 2003上运行ASP.NET 2.0应用程序,使用StateServer cookieless="false"会话模式和FormsAuthentication。

有其他人有这个问题? 我们怎样才能解决这个问题?

Answer 1:

我们就遇到了这个问题,确切的我在以前的公司,花了3个星期调试。 ASP.NET是给用户别人的会话状态。 这是真的不可能在调试环境中复制。

此修复程序时,我们发现它只是一些在web.config中。 我不完全记得,所以我花了一些时间在Google上搜寻。 我认为这个问题必须是与输出缓存。 看看这篇文章在“会话和输出缓存”。

http://download.microsoft.com/download/3/a/7/3a7fa450-1f33-41f7-9e6d-3aa95b5a6aea/MSDNMagazineJuly2006en-us.chm (文章的标题是保持网站平稳运行,避免这些常见的10 ASP.NET陷阱由杰夫·普罗西斯于2006年7月版MSDN杂志)

如果这听起来像您的情况,则修复可能只是禁止在web.config中enableKernelOutputCache选项。

祝好运。



Answer 2:

寻找在自己的代码中的bug第一 - 这是目前最有可能的解释。 例如使用静态字段或其他共享存储器,如ASP.NET缓存用户特定的数据。



Answer 3:

可能的答案 - 类似isue使用Cookie的会话状态的报道。

会议显示一些错误

编辑-添加

另一种可能的答案:

ASP.NET页面被存储在HTTP.sys中内核缓存在IIS 6.0当ASP.NET页面生成包含一个Set-Cookie响应的HTTP标头



Answer 4:

它没有多少次出现? 你检查使用浏览器后退或发送与会话ID链接到对方用户?

检查不确定状态服务器错误的一种方法是切换到另一个会话管理器,回退到进程内,如果你能或使用SQL Server,但将更好地找到一种方式来重现bug它第一次,所以你可以测试它。



Answer 5:

可以在两个交叉的用户都使用相同的代理cacheing? 如果是这样,那么一个用户可能会看到被缓存为其他用户如果网址匹配,特别是如果代理未表现良好的数据。

是不是这与谷歌网络加速器项目的主要问题(目前已停产)?



Answer 6:

有这个问题,原来是一个局部视图一个OutputCache属性。



文章来源: ASP.NET Session Mix-up using StateServer (SCARY!)