如何将会话变量从经典asp转移到asp.net?

时间:2015-02-10 04:41:56

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

我正在从asp迁移到asp.net应用程序,我需要将会话变量从index.asp页面传递到aspx页面。有一个示例演示了会话变量传输。

Transfer Session Variables from Classic ASP to ASP.NET

这里我不明白的是,asp页面中提到的aspx页面在哪里?有没有办法转移到任何aspx页面,没有在index.asp页面中提到?

这是我的代码,

 dim sItem, i
  i= 0
  For each sItem in Session.Contents
    if i <> 0 then
      Response.Write("&")
    end if
    Response.Write(sItem & "=" & Server.UrlEncode(Session.Contents(sItem))) 
    i= i + 1
  next %>'

1 个答案:

答案 0 :(得分:1)

首先,ASP.NET不是经典ASP的更新版本。

ASP.Net中的会话 在ASP.NET中,每个Web页面都派生自System.Web.UI.Page类。 Page类聚集会话数据的HttpSession对象的实例。在此示例中,名为SessionPage的自定义Page类派生自System.Web.UI.Page,以提供与Page类相同的所有功能。与派生页面的唯一区别是默认的HttpSession被自定义会话对象覆盖。

经典ASP中的会话

本机ASP会话只能将会话数据存储在内存中。为了将会话数据存储到SQL Server,编写自定义Microsoft®VisualBasic®6.0COM对象来管理会话状态,而不是使用本机会话对象。此COM对象将在每个Web请求的开头实例化,并从SQL Server重新加载会话数据。 ASP脚本完成后,此对象将终止,会话状态将持久保存回SQL Server。

经典ASP与ASP.Net之间的迁移实施

1

设置演示程序的步骤

创建一个名为SessionDemoDb的新数据库。 创建SessState表(osql.exe -E -d SessionDemoDb -i Session.sql)。 创建一个名为Demo的新虚拟目录。 在ASP配置选项卡下关闭ASP会话。 将web.config,testPage.aspx,Global.asa,testPage.asp和GlobalInclude.asp复制到虚拟目录。 更新Global.asa和web.config中的DSN字符串设置。会话超时设置是可选的。默认值为20分钟。 将SessionUtility.dll安装到全局程序集缓存(gacutil / i SessionUtility.dll)中。 使用regasm.exe(regasm.exe SessionUtility.dll /tlb:SessionUtility.tlb)将SessionUtility.dll公开为COM对象。 将SessionManager.dll复制到本地目录并使用regsvr32.exe进行注册(regsvr32 SessionManager.dll)。 授予IUSR_帐户以读取和执行对SessionMgr.dll的访问权。

运行演示程序的步骤

启动Microsoft®InternetExplorer。 加载testPage.asp以获得经典ASP。数字“1”应出现在网页中。 单击Internet Explorer上的刷新以重新加载页面。该数字应该递增。 将URL更改为test的testPage.aspx。这个数字应该继续增加。 首先启动testPage.aspx页面可以重复相同的过程。

2

每当您的应用程序进行跳转时,页面将被重定向到这个新创建的页面,该页面将为会话变量创建cookie,这对用户来说是必不可少的。这些cookie随后将被ASP.NET抓取。使用这些cookie,根据ASP.NET浏览器的要求创建新的会话变量。

更多信息:

https://msdn.microsoft.com/en-us/library/aa479313.aspx

http://www.codeproject.com/Articles/30723/Handle-session-variable-problems-between-classic-A