3

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

这样做有两个障碍:

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

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

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

提前致谢。

4

3 回答 3

7

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

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

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

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

用户尝试访问某些受保护的内容页面 -> 重定向到登录页面 -> 登录 -> 根据登录成功设置会话信息 -> 重定向到 .net 页面,传递登录凭据等 -> aspx 页面设置会话信息然后立即重定向回内容页面。

我们知道这是一个 hack,但它在短期内有效,直到我们可以让网站全部转换。

于 2009-10-06T17:11:29.153 回答
1

使用更新的 IIS 设置可能有更好的方法(必须承认我没有及时了解 IIS7 可以做什么新的好东西)。但是您可以从您的 ASP 登录页面到 ASP.Net 页面执行 XMLRequest。如果逻辑足够简单,您可以通过 Post 数据中所需的设置或让 .net 页面自行填充会话数据。.net 页面会在 cookie 中返回一个 .net 会话 id,您需要在 ASP 用户 cookie 集合中设置它,以便该用户同时拥有 .net 和经典 ASP 会话 cookie。

这样就可以了。

于 2009-10-06T17:07:16.197 回答
0

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

微软有一篇相当不错的文章,虽然它在这一点上有点老了。

于 2011-07-05T22:31:34.310 回答