-1

我正在使用 Session.Abandon 清除会话数据,这在内部将触发 session_end 以结束会话。它在我的本地机器上工作正常,但是当我在生产环境中测试它时它失败了(不会触发 session_end)。我们在生产环境中使用负载均衡器,所以我怀疑这可能是 session_End 事件没有触发的原因,尽管会话数据正在被清除。会话状态仅处于 InProc 模式。

编辑-

更正 - 我们有两个网站通过 IIS 在一台机器上托管,负载均衡器负责将请求导航到 IIS。两个网站共享相同的 cookie。我们正在尝试根据 cookie 值在第二个站点的 Session_Start 中设置一些值。当用户从第一个站点重定向到第二个站点时,它第一次工作正常,但第二次重定向我们得到会话 null。我很确定只有在第二次不调用 session_start 时才会发生这种情况,这基本上意味着当第一次重定向时,我们调用 session.abandon ,它不会触发 session_end ,此后所有后续请求 session_Start 都不会触发。

4

1 回答 1

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

于 2013-05-07T19:21:09.407 回答