【问题标题】:ASP3 And ASP.NET session sharingASP3 和 ASP.NET 会话共享
【发布时间】:2010-12-17 18:47:54
【问题描述】:

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

谢谢

【问题讨论】:

  • 在我们的一个应用程序中,我们使用 url 中的查询字符串将 asp.net 会话数据传递给经典的 asp 会话数据。它不漂亮,但为我们节省了重写时间。

标签: asp.net session asp-classic


【解决方案1】:

尽管 Microsoft 尽最大努力使 ASP 和 ASP.NET 轻松共存,但仍有一个领域是绊脚石……会话状态。幸运的是,ASP.NET 升级后的会话状态管理的优势远远超过了无法将“经典”会话信息传递给 .NET 的不便。不幸的是,没有简单的解决方案。我能提供的最多的是一个易于实施的解决方法。

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

第二个选项可能更接近实际解决方案而不是解决方法。 Microsoft 的 Billy Yuen 开发了一个有效的解决方案。代码很优雅,集成似乎是无缝的,但我无法让它在我的系统上运行(记住我说没有简单的解决方案,而不是根本没有解决方案)。如果此解决方案对您有用,那就太好了!您将不需要我的代码,并且会很高兴地将会话信息从“经典”传递到 .NET,就像它已经过时一样,感谢您的光临。

好的,如果您仍在阅读,让我简要介绍一下我创建的解决方法。它需要一个数据库,但哪种类型的数据库并不重要(尽管代码是为 SQL Server 编写的)。当一个页面(源页面)想要重定向到另一个使用不同版本 ASP 的页面(目标页面)时,它会调用一个中间页面。源中间页面获取每个会话变量并将其与全局唯一 ID (GUID) 一起添加到数据库中。由于“经典”和 .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.* 文件必须全部位于同一个文件夹中才能工作。

用法

要在超链接(锚标记)或 Response.Redirect 中使用,请将目标 URL 设置为以下之一:

来自 ASP“经典”页面:

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

从 ASP.NET 页面:

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

代码将传输 Session 信息并将用户重定向到 or 指定的 url。 下载

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

【讨论】:

    【解决方案2】:

    可以看看NSession 它允许使用状态服务器在经典 ASP 和 ASP.Net 之间共享会话状态。设置非常简单,只需将 App 配置为使用 State Server 进行会话并注册几个 dll 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-25
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多