2014-06-19 69 views
1

我有一个简单的场景。在asp.net的一页,我存储在会话中的一些值一样ASP.NET会话得到零值意外

会议(“VAR”)=“一些字符串” 或 会议(“VAR1”)=串的泛型列表的对象

,然后使用response.redirect转到另一个页面。 在其他页面上显示的事情很好,但是当我们按下按钮对其执行操作时,会话将变为空。

请记住,它并不总是会发生。只是有时它会这样做,而其他时候它可以正常工作。我们通过这种做法做了很多工作来移动页面之间的一些值(通过将它们存储到会话中并转到其他页面)。我们有非常大的应用程序,并且所有的工作都很好,但是从某些日子以来,一些用户已经在一些网站上遇到了这个问题。再次,它并不总是发生。 99%它工作正常,但很少,我们有这个问题,会议变量不再可用。

有什么方法可以知道哪里出了问题?我们确实在会话中存储了一些其他变量,他们当时似乎很好。只有一些会话变量会丢失它们的值。

从我的研究中,似乎有人责怪IIS工作进程重启或应用程序池回收。但我相信在这种情况下,应用程序中的所有会话变量必须无效,而不是少数选中。对?

另外,有没有什么办法知道代码池或工作进程是否重新启动?

感谢 Sameers

+0

显示一些帮助代码 –

+0

如果您在20分钟后进行回发,会话的默认时间为20分钟,它会自动为空 –

+0

“会话获取空”是什么意思?这是否意味着会话对象本身为空,或者没有为特定的键存储值? – Rune

回答

1

也许你传递域边界。会话由客户端cookie标识,通常存储在每个域的基础上。因此,例如,从www.whatever.comclient.whatever.com的重定向将导致您失去会话ID,这会在您看来是“排除会话”。所以,也要小心子域名。从whatever.comwww.whatever.com是好的,但相反,没有。

是的,除非您在网上服务器场IIS上,否则重新启动工作进程会终止所有会话。除非你将它们存储在数据库中或其他东西。

+0

在子域名的情况下web.config(system.web)中的设置'httpCookies'配置会有所帮助。您可以设置会话cookie有效的域。 'domain =“。stackoverflow.com”'会使会话可用于stackoverflow的子域名。 – Schadensbegrenzer