我正在从asp迁移到asp.net应用程序,其中需要将会话变量从index.asp页面传递到aspx page.There,这是一个演示会话变量传输的示例。
Transfer Session Variables from Classic ASP to ASP.NET
这里我不明白的是,asp页面中提到的aspx页面在哪里?是否有方法将index.asp页面中提到的aspx页面转移到任何aspx页面?
这是我的密码
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 %>'发布于 2015-02-10 05:22:56
首先,ASP.NET不是经典ASP.的更新版本。
会话在ASP.Net in ASP.NET中,每个网页都来自System.Web.UI.Page类。Page类为会话数据聚合HttpSession对象的实例。在本例中,名为SessionPage的自定义页面类是从System.Web.UI.Page派生出来的,它提供了与Page类相同的所有特性。派生页面的唯一不同之处是,默认的HttpSession被自定义会话对象覆盖。
经典ASP中的会话
本机ASP会话只能在内存中存储会话数据。为了将会话数据存储到Server,将编写一个自定义Microsoft Visual Basic 6.0 COM对象来管理会话状态,而不是使用本机会话对象。此COM对象将在每个Web请求的开头实例化,并从Server重新加载会话数据。当ASP脚本完成后,此对象将被终止,会话状态将被持久化回Server。
经典ASP到ASP.Net迁移的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)中。将SessionUtility.dll公开为COM对象,使用regasm.exe (regasm.exe SessionUtility.dll /tlb:SessionUtility.tlb)。将SessionManager.dll复制到本地目录,并使用regsvr32.exe注册它(regsvr32 SessionManager.dll)。授予IUSR_帐户读取和执行对SessionMgr.dll的访问权限。
运行演示程序的步骤
启动Microsoft Internet Explorer。加载经典ASP的testPage.asp。数字"1“应出现在网页中。单击上的刷新以重新加载页面。这个数字应该增加。将testPage.aspx更改为ASP.NET。该数字应该不断增加。通过首先启动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
https://stackoverflow.com/questions/28424269
复制相似问题