我正在从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 %>'
答案 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