2009-11-18 129 views
1

有没有办法共享ASP3和ASP.NET之间的会话?ASP3和ASP.NET会话共享

感谢

+0

在我们的一个应用程序中,我们使用网址中的querystrings将asp.net会话数据传递给经典的asp会话数据。这不是很好,但保存了我们的重写。 – adrianos 2009-11-18 08:33:12

+0

你能解释更多吗? TY。 – 2009-11-18 12:57:31

回答

2

尽管如此,使ASP和ASP.NET共存不费吹灰之力微软尽了最大努力,一个区域仍然是一个绊脚石......会话状态。幸运的是,ASP.NET升级会话状态管理的优势远远超过了不能将“Classic”会话信息传递给.NET的不便。不幸的是没有简单的解决方案;我能提供的最多是一个易于实施的解决方法。

为了找到合适的解决方案,我遇到了两个值得一提的好选择。第一个涉及将会话信息解析到“经典”中间页面上的隐藏表单字段,然后将页面提交到将表单字段加载到会话状态的.NET中间页面。这是一个很好的简单解决方案,但它不能同时工作。在.NET中,您无法指定您提交给的页面。每个页面都必须自行回发。

第二个选项可能更接近实际解决方案而不是解决方法。微软的Billy Yuen开发了一个有效的解决方案。代码优雅,集成看起来是无缝的,但我无法在我的系统上工作(记得我说没有简单的解决方案,并不是没有解决方案)。如果这个解决方案适合你,太棒了!你不需要我的代码,你会很高兴地将会话信息从“Classic”传递给.NET,就像它正在流行一样,谢谢你停下来。

好的,如果您仍在阅读,请简单介绍一下我创建的解决方法。它需要一个数据库,但是哪种类型的数据库并不重要(尽管代码是为SQL Server编写的)。当一个页面(源页面)想要重定向到使用不同版本的ASP的另一个页面(目标页面)时,它会调用一个中间页面。源中间页面使用每个会话变量并将其与全局唯一ID(GUID)一起添加到数据库。由于“Classic”和.NET使用不同的SessionID格式,因此不可能使用SessionID,因此使用GUID。源中间页然后通过Querystring变量将GUID传递到目标中间页。目标中间页面从数据库检索会话信息,自行清理,然后重定向到目标页面。它与第一种解决方法类似,但支持在两个方向上传输状态。 代码使用 安装

  1. 将举行临时会议信息的数据库上运行的“ASPSessionState.sql”的SQL查询。
  2. 将.asp和.aspx。*(SessionTransfer.aspx和SessionTransfer.aspx.cs)文件复制到您网站上的文件夹中。
  3. 更新“SessionTransfer.asp”和“SessionTransfer.aspx.cs”文件中的连接对象信息。它位于每个文件的三个位置(抱歉关于未合并连接信息)。
  4. 编译aspx文件。
  5. .asp和.aspx。*文件必须全部位于相同的文件夹才能工作。

用法

对于一个超链接(定位标记)的使用或一个响应。重定向,设置的目标网址为以下之一:

从ASP “经典” 页:

SessionTransfer.asp?dir=2aspx&url=<asp_dotnet_url> 

从ASP.NET页:

SessionTransfer.aspx?dir=2asp&url=<asp_classic_url> 

代码将转移会话信息并将用户重定向到由or指定的url。 下载

您可以从here下载代码:session_transfer.zip(4.6 KB)。

0

可以看看NSession它允许使用状态服务器在Classic ASP和ASP.Net之间共享会话状态。很容易设置只是配置应用程序使用状态服务器的会话和注册几个DLL文件。