我们有一个遗留应用程序,它是Classic Asp
和ASP.NET
的混合体。这个遗留应用程序位于我们的主ASP.NET网站的子文件夹中。要清楚这个子文件夹中有.asp和.aspx页面的混合。
我们不共享会话,但是当从.asp导航到.aspx页面时,我们会在正文中发布足够的信息来设置ASP.NET
中的会话。
如果用户导航回.asp页面,那么用户会话仍然存在,并且一切都在一台Web服务器上正常工作。
我们正在两个Web服务器上测试load balancing
,设置如下。
主ASP.NET
不使用亲和关系,因此由负载均衡器决定使用哪个Web服务器。旧版应用程序位于子文件夹中,此子文件夹具有单个关联。两个Web服务器在web.config中都具有相同的机器密钥设置。 ASP.NET
应用程序的会话状态存储在数据库中。
问题是当从.aspx导航回.asp时,Classic Asp
会话丢失了。我想明白为什么?
请注意。单一关联 - 粘性会话适用于旧文件夹,我已使用IIS日志对其进行了检查。因此,对旧文件夹的所有请求将始终路由到同一个Web服务器。
答案 0 :(得分:0)
在负载均衡的情况下,经典ASP不支持跨服务器的会话。使用ASP.NET术语(松散地),ASP Clasic会话支持的唯一mode
是InProc
和Off
。
如果您希望会话在负载平衡方案中工作,您必须将负载均衡器配置为使用"粘性会话/关联性",或者滚动您自己的由数据库或其他东西支持的自定义会话管理(在没有创建安全漏洞的情况下做到这一点很棘手)。