即使所有App_pool回收设置都设置为FALSE,IIS也会丢失自定义会话

本文关键字:设置 IIS FALSE 会话 自定义 App pool | 更新日期: 2023-09-27 18:22:38

我们有一个带有IIS 7.5的aspx.net应用程序,由于该应用程序在没有明确原因的情况下丢失或放弃会话,我们面临着一个巨大的问题。由于客户端限制,我们必须使用自定义会话,而不是IIS会话。

应用程序池正在使用Pipeline:Integrated,Framework为4,并且应用程序池中的所有"Recycling"设置都已设置为FALSE。

我所说的客户会话是一个.cs类,我们是根据微软在这里提出的关于如何创建自定义会话的示例创建的。我们所做的与这个Microsoft示例不同的唯一一件事是,我们添加了另一个名为"Token"的会话变量,每次我们都需要检查会话id。我们还检查令牌是否存在。正如你所看到的,这是一个简单的验证问题。。但是,IIS似乎正在区分此令牌会话。

当我们使用Fiddler跟踪应用程序时,它会显示令牌ID为空,但会话ID值仍然存在。。所以我说不通。

如果有人能给我们建议和提示,或者可能遇到过类似的问题,并告诉我们为克服这个问题做了什么,我们真的非常感谢这种帮助。

请帮助

即使所有App_pool回收设置都设置为FALSE,IIS也会丢失自定义会话

我要检查的几件事:

  • 在应用程序池回收系统下(通常在WAS下作为源),检查windows事件日志中的日志条目,因为应用程序池可能仍在您不知情的情况下进行回收
  • 在global.asax application_start中,创建一个公共静态DateTime,用于捕获应用程序池何时启动,并在application_BeginRequest事件中将变量作为头写入,以帮助确保应用程序池不会被回收。有时回收物是非常透明的,你可能没有注意到
  • 您可以将会话状态存储在应用程序池之外的其他几个位置,例如:http://msdn.microsoft.com/en-us/library/vstudio/ms178586(v=vs.100).aspx即使web服务器重新启动,状态服务器和sql server也会保留数据
  • 是否有可能是某些原因导致会话ID在不该更改的情况下发生更改?让它看起来像是失去了会话