我有一个简单的场景。在asp.net的一个页面中,我在会话中存储了一些值,如
session(“var”)=“some string” 要么 session(“var1”)=字符串
的通用列表的对象然后使用response.redirect转到另一个页面。 在其他页面上它显示的东西很好,但是当我们按下按钮对其执行操作时,会话变为空。
请记住,并非总是如此。有时它会这样做,有时它可以正常工作。我们做了很多练习,将一些值从页面移动到页面(通过将它们存储到会话中并转到其他页面)。我们有非常大的应用程序,一切正常,但从某些日子来看,一些用户在一些网站上遇到过这个问题。再一次,它并不总是发生。 99%它工作正常,但很少次,我们遇到会话变量不再可用的问题。
有什么方法可以知道出了什么问题以及在哪里?我们在会话中也存储了一些其他变量,当时它们看起来很好。只有部分会话变量会丢失其值。
从我的研究中,似乎人们指责IIS工作进程重启或应用程序池回收。但我相信在这种情况下,应用程序中的所有会话变量必须是无效的,而不是少数选择。对?
另外,有没有办法知道代码是否重启了池或工作进程?
感谢 Sameers
答案 0 :(得分:1)
也许你正在通过域边界。会话由客户端cookie标识,通常以每个域为基础存储。因此,例如,从www.whatever.com
到client.whatever.com
的重定向会导致您丢失会话ID,这会在您看来“取消会话”。所以,也要小心子域。从whatever.com
到www.whatever.com
是好的,但反之亦然。不过。
是的,除非您在Web场IIS上,否则重新启动工作进程将终止所有会话。除非您将它们存储在数据库或其他东西中。