Session 转到新页面时丢失经典ASP会话

Session 转到新页面时丢失经典ASP会话,session,iis,cookies,asp-classic,session-cookies,Session,Iis,Cookies,Asp Classic,Session Cookies,我在互联网上搜索了很长一段时间,我找不到一个经典ASP问题的答案。我的任务是让一个旧的经典ASP解决方案在本地工作,这被证明是具有挑战性的,因为我对应用程序或经典ASP本身知之甚少 我已经成功地设置了调试,似乎发生的是设置了会话变量,但当导航到新页面时,会话变量将继续,并且sessionid字段已递增。我认为这是因为没有设置cookie。我在Chrome、IE、Firefox和Opera上试过,每次都遇到同样的问题 我的本地计算机和托管实时应用程序的web服务器之间的服务器设置差异使得这一点特别

我在互联网上搜索了很长一段时间,我找不到一个经典ASP问题的答案。我的任务是让一个旧的经典ASP解决方案在本地工作,这被证明是具有挑战性的,因为我对应用程序或经典ASP本身知之甚少

我已经成功地设置了调试,似乎发生的是设置了会话变量,但当导航到新页面时,会话变量将继续,并且sessionid字段已递增。我认为这是因为没有设置cookie。我在Chrome、IE、Firefox和Opera上试过,每次都遇到同样的问题

我的本地计算机和托管实时应用程序的web服务器之间的服务器设置差异使得这一点特别困难,因为我无法轻松地比较IIS配置。我的本地计算机安装了IIS 7.5,Web服务器安装了IIS版本6。我也尝试过创建自己的应用程序,这里的会话在请求之间正常工作,这使我相信这是IIS配置问题或应用程序的问题。我还将断点放在Session.放弃发生的任何地方,并且这些断点没有被命中

任何帮助都将不胜感激


Alex

您需要创建一个方法来检查会话,并在应用程序中使用的每个asp页面上调用该方法

Sub CheckSession()
    If Session("LoginID") = "" Then
        Response.Redirect "../Login.asp"
    End If
End Sub
然后在每个asp页面中调用CheckSession()方法

Call CheckSession()
在需要与会话绑定的asp页面的顶部,还需要包含声明CheckSession()方法的asp文件

因为我已经创建了一个SharedPost.asp页面,并在其中创建了所有方法,并将其包含到我的另一个asp页面中

<!--#include file="../Shared/SharedPost.asp" -->

您的应用程序可能抛出错误和/或回收应用程序池,或者您正在使用的链接/表单/重定向跨越域边界(从x.com到y.com,然后返回到x.com),从而在错误的域上创建会话


请参阅:了解一些常见的故障排除方法。

工作进程的数量如何?默认情况下,每个应用程序池应有1个工作进程。如果有更多的工作进程,它们之间的会话也可能丢失


在IIS中,检查处理网站的应用程序池中的以下设置:“最大工作进程数”。

导航意味着表单提交或重定向?我已尝试刷新,通过一个链接和一个表单提交进行导航,它们都会导致会话数据丢失——我已经知道会话正在被清除,尽管我已经在每个页面加载中命中的第一个包含文件中设置了断点。通过在会话上放置一个手表,SessionId看起来与上一个请求不同,因此即使某个特定变量不同,整个会话也不会被记住。我感觉这是某种配置问题——应用程序在IIS中有一个复杂的结构