ASP.NET WebForms - 会话变量Null

时间:2009-03-10 20:50:27

标签: asp.net session webforms

我的主页上有一个asp.net应用程序,我有一个iframe保持活着(在我的网站上每隔几分钟点击一个页面,defibrillator.aspx,以保持会话处于活动状态)。这在大多数情况下都有效,但在我的除颤器页面上的页面加载期间,我的会话变量经常返回null。起初,我认为会话由于某种原因被服务器超时,所以我将一些日志记录到global.asax中的Session_End事件中,但它从未被命中过。

任何可能导致会话丢失的想法。

4 个答案:

答案 0 :(得分:2)

很多事情都可能导致会话丢失。一个AppPool回收,iisreset,客户端可能会丢失其会话cookie等。不知道更多,很难说出问题是什么。

如果会话非常重要,您可以轮询应用程序以防止工作进程休眠,那么您应该查看persisting your session state to SQL Server

答案 1 :(得分:2)

答案 2 :(得分:1)

我遇到了同样的问题,在Session中存储购物车状态,但让它随机返回null。我想我在Bertrand Le Roy的博客上找到了答案,这似乎对我有用:

  

还可能导致会话丢失问题   来自错误配置的应用程序池。   例如,如果是应用程序池   您的网站正在运行配置为   网络农场或网络花园(通过设置   最大工作进程数   不止一个),如果你不是   使用会话服务或SQL   会话,传入请求将   不可预知地去找其中一个工人   进程,如果它不是那个   会话已创建,它已丢失。该   解决这个问题的方法之一   如果不这样做,不要使用网络花园   需要性能提升,或使用一个   进程外会话   提供者。

Blog

答案 3 :(得分:0)

如果选择的持久性机制是InProc,那么很多东西都可以触发它。完全反建议用于生产环境。