我正在使用Session.Abandon来清除会话数据,这会在内部触发session_end以结束会话。它在我的本地机器上工作正常,但是当我在生产环境中测试时,它失败了(没有触发session_end)。我们在生产环境中使用Load Balancer,所以我怀疑这可能是session_End事件没有触发的原因,尽管会话数据已被清除。会话状态仅处于InProc模式。
编辑 -
要更正 - 我们有两个网站通过IIS在一台单机中托管,负载均衡器负责将请求导航到IIS。两个网站都共享相同的cookie。我们正在尝试根据cookie值在第二个网站的Session_Start中设置一些值。当用户从第一个站点重定向到第二个站点时,它首次正常工作,但第二次重定向时,我们将会话置为空。我很确定只有在第二次调用session_start时才会发生这种情况,这基本上意味着当第一次重定向时,我们调用session.abandon,它不会触发session_end,从此以后会对所有后续请求调用session_Start不会得到火。
答案 0 :(得分:0)
当您的站点落后于负载均衡器时,InProc模式将不适用于取决于会话的站点。将会话转到SQLServer或State Server并提供计算机配置值。请参阅这些链接。
http://msdn.microsoft.com/library/ms178586.aspx http://blog.maartenballiauw.be/post/2007/11/22/ASPNET-load-balancing-and-ASPNET-state-server-(aspnet_state).aspx http://support.microsoft.com/kb/317604