【问题标题】:Classic asp application session lost after Response.RedirectResponse.Redirect 后经典 asp 应用程序会话丢失
【发布时间】:2019-11-16 03:09:54
【问题描述】:

代码托管在具有两个不同域的同一服务器上,一个是内部测试(abc1.com)和外部测试(abc2.com),它们的应用程序池不同,代码相同,文件夹结构相同。

只有一个域 abc2.com 的会话丢失问题。

仅在外部测试站点的情况下,从一页和 Respone.Redirect 尝试访问会话后设置的会话丢失。

任何有线索的人。 如何解决问题?

【问题讨论】:

  • 您的会话对象是特定于域的,因此如果您重定向到另一个域,您的会话变量将不再适用,即使这两个域指向您的网络服务器上的目录
  • @John 你应该这样回答

标签: asp-classic


【解决方案1】:

这里其实有两个问题;

正如@John 在 cmets 中正确提到的,如果域不匹配,那么您的会话将不会被转移。原因是会话正常工作的经典 ASP 为每个访问者发出一个唯一的 cookie。 Cookie 绑定到一个(子)域,如果您在两个不同的(子)域上运行,则在一个域上设置的 cookie 无法被另一个域读取。因此,一个域上的会话不会与另一个域匹配域。

不幸的是,这仍然不能完全解决您的问题,因为 Classic ASP 中的每个应用程序池也会创建自己的会话 cookie。这就是为什么增加应用程序池中的进程也会导致会话范围混乱。

因此,简而言之,经典 ASP 中的会话只能在使用单个应用程序池进程的同一域中工作。 解决此问题的唯一方法是编写您自己的会话范围,为每个用户发出您自己的 cookie,并将相应的变量存储在您自己的后端。

【讨论】:

    猜你喜欢
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 2015-06-08
    • 2014-10-14
    • 2014-01-01
    相关资源
    最近更新 更多