我们有一个广泛的经典 ASP 站点,并且我们正在寻求升级到 ASP .Net(很可能是最新版本)。显然,一次升级所有页面将是一项艰巨的任务,因此我们首先只想在 ASP .Net 中编写新页面(和页面重写)。

这样做有两个障碍:

  1. 我不知道如何访问 ASP .Net 中的经典 ASP 会话数据。只需设置一次,因为除了登录页面之外,它不会被任何页面修改。我宁愿对经典 ASP 登录页面进行最小的更改,但这只是一个很小的偏好。

  2. ASP 和 ASP .Net 会话必须同时超时,以保持版本差异无缝。

有人可以提供任何帮助吗?

提前致谢。

有帮助吗?

解决方案

我们面临同样的任务(不好玩)。由于Asp.Net会话和Asp会话不能共享,我们使用了多种方法的组合,每种方法都适合具体情况。

  • 在某些情况下,我们使用cookie而不是session。
  • 在其他情况下,我们设置自动发布表单,以便如果在经典 ASP 页面中设置用户的会话信息,则在设置会话信息后,我们重定向到读取查询字符串参数并使用这些参数来设置的 Asp.Net 页面Asp.Net 的会话变量相同。然后,一旦 Asp.Net 页面设置了相同的变量,该页面就会重定向到原始登录页面先前指向的任何页面。反之亦然。

因此,在第二种情况下,示例流程将更改为:

用户试图访问某些受保护的内容页面 - >重定向到登录页面 - >基于登录成功的会话信息中的登录 - >重定向到内容页面。

用户试图访问某些受保护的内容页面 - >重定向到登录页面 - >基于登录成功的会话信息集合 - >重定向到.NET页面,并沿着登录凭据,等等。- > ASPX页面设置会话信息,然后立即将其重定向到内容页面。

我们知道这是一次黑客攻击,但它在短期内起作用,直到我们能够将网站全部转换为止。

其他提示

使用较新的 IIS 设置可能有更好的方法(必须承认我没有及时了解 IIS7 的新功能)。但是您可以从 ASP 登录页面向 ASP.Net 页面执行 XMLRequest。如果逻辑足够简单,您可以传递 Post 数据中所需的设置,也可以让 .net 页面填充会话数据本身。然后,.net 页面会在 cookie 中返回一个 .net 会话 ID,您需要在 ASP 用户 cookie 集合中设置它,以便该用户同时拥有 .net 和经典 ASP 会话 cookie。

这样就可以了。

几年前我通过使用数据库实现了这一点。

微软有一个漂亮的 好文章 就它而言,虽然现在有点旧了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top