Asp.net 从.aspx导航到.Asp页面时,经典Asp会话状态丢失

Asp.net 从.aspx导航到.Asp页面时,经典Asp会话状态丢失,asp.net,asp-classic,load-balancing,Asp.net,Asp Classic,Load Balancing,我们有一个传统应用程序,它是经典Asp和Asp.NET的混合体。此旧版应用程序位于我们的主ASP.NET网站的子文件夹中。要澄清的是,此子文件夹中混合了.asp和.aspx页面 我们不共享会话,但当从.asp导航到.aspx页面时,我们会在正文中发布足够的信息,以便在asp.NET中设置会话 如果用户导航回.asp页面,那么用户会话仍然存在,并且在单个web服务器上一切正常 我们正在两台web服务器上测试负载平衡,设置如下 主ASP.NET不使用关联,因此由负载平衡器决定使用哪个web服务器。旧

我们有一个传统应用程序,它是
经典Asp
Asp.NET
的混合体。此旧版应用程序位于我们的主ASP.NET网站的子文件夹中。要澄清的是,此子文件夹中混合了.asp和.aspx页面

我们不共享会话,但当从.asp导航到.aspx页面时,我们会在正文中发布足够的信息,以便在
asp.NET
中设置会话

如果用户导航回.asp页面,那么用户会话仍然存在,并且在单个web服务器上一切正常

我们正在两台web服务器上测试负载平衡,设置如下

ASP.NET
不使用关联,因此由负载平衡器决定使用哪个web服务器。旧版应用程序位于子文件夹中,此子文件夹具有单个关联。两个web服务器在web.config中具有相同的机器密钥设置。
ASP.NET
应用程序的会话状态存储在数据库中

问题是从.aspx导航回.Asp时,
Classic Asp
会话丢失。我想知道为什么


注意。单一关联-粘性会话适用于旧文件夹,我已使用IIS日志检查了这一点。因此,对旧文件夹的所有请求将始终路由到同一个web服务器。

在负载平衡的情况下,Classic ASP不支持跨服务器的会话。使用ASP.NET术语(松散地),ASP Clasic会话支持的唯一
模式是
InProc
Off

如果您想让会话在负载平衡的场景中工作,您必须将负载平衡器配置为使用“粘性会话/亲和性”,或者使用数据库或其他支持的自定义会话管理(这在不创建安全漏洞的情况下很难正确进行)


阅读材料:

我理解这一点,这就是为什么要为旧文件夹设置关联,以便根据IP将所有请求路由到同一服务器。啊,我明白了。我所看到的负载平衡器实现亲和性的方式是,它们向响应添加头或cookie;负载平衡器使用该标记跟踪在收到下一个请求时要使用的服务器。我的猜测是,当您转到ASP.NET页面时,头/cookie将被负载平衡器丢弃(因为会话不再仿射,因此必须停止跟踪)。您可以使用Fiddler或类似的工具来检查负载平衡器头/cookie,并验证这个想法吗?如果这是正确的,请与您的负载平衡器供应商联系,查看他们是否有任何解决方法。负载平衡器使用IP或IP的前3个八位字节将流量路由到同一服务器。传统应用程序的ASP.NET页面与经典ASP页面位于同一文件夹中,因此仍然需要关联。我已经使用IIS日志确认,对旧文件夹、asp或aspx的所有请求都在访问同一台服务器。