经典ASP到ASP.Net一次性会话数据拷贝

时间:2009-10-06 17:01:28

标签: asp.net asp-classic asp.net-session

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

这样做有两个障碍:

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

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

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

    提前致谢。

3 个答案:

答案 0 :(得分:7)

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

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

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

  

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

  

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

我们知道这是一个黑客,但它在短期内起作用,直到我们可以让所有网站全部转换。

答案 1 :(得分:1)

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

那就可以了。

答案 2 :(得分:0)

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

微软有一个漂亮的good article,虽然它现在有点旧了。