【问题标题】:How Can I Use Classic ASP Session Object in ASP.NET to Read Session Variables如何在 ASP.NET 中使用经典 ASP 会话对象来读取会话变量
【发布时间】:2012-07-05 20:21:10
【问题描述】:

背景:

  1. 我正在为经典 ASP 网站开发 ASP.NET 应用程序
  2. 用户认证由经典的 ASP 网站执行
  3. 经典的 ASP 网站将数据存储在会话变量中以识别经过身份验证的用户
  4. 我需要在我的 ASP.NET 应用程序中读取这些会话变量中的数据

许多文章说您需要将会话状态存储在数据库中才能做到这一点。

他们都没有提到在 VB.NET 代码中使用 VBScript 对象。

可以这样做吗?我不能简单地在我的应用程序中引用一个 COM 库并使用对象及其方法吗?如果没有,怎么会?

【问题讨论】:

  • 您如何运行您的 ASP 经典应用程序和 ASP.NET 应用程序?它们是同一个 webb 应用程序的一部分(共享同一个 web.config)还是位于不同的目录中?
  • 这是一个疯狂的设置:根网站是一个 ASP.NET 网站,其中包含一个作为虚拟文件夹的经典 ASP 网站,我在该虚拟文件夹中添加了我的 ASP.NET 网站作为IIS 中的“应用程序”:)
  • 那么我认为你的 ASP.NET 站点完全独立于 ASP 经典站点运行。我认为您必须将 ASP.NET 子站点配置为不是自己的应用程序。我认为 ASP.NET 有一些兼容性设置可以让 ASP classic 和 ASP.NET 在同一个应用程序中工作。

标签: asp.net vb.net com asp-classic vbscript


【解决方案1】:

会话变量值不仅仅是函数调用的结果。它们依靠 IIS 和其他工具来唯一标识用户。无法跨这两个框架直接检索会话状态。

当然,根据数据的敏感程度,您可以破解它。在后台进行 Ajax 调用以从自定义页面检索会话数据并将其提供给 .NET 会话。这是一种黑客攻击和安全风险,但它会起作用。

【讨论】:

  • 值得注意的是会话变量不是 IIS 特定的。您可以在 UltiDev 上很好地使用它们
  • 我假设是开箱即用的 IIS 安装。我知道 PHP 和其他框架可以在文件中存储或用于存储会话状态;所以会话可以在框架之外访问。据我了解,经典 ASP 将会话值存储在内存中,而不是原始文件中。
  • 最后,我们找到了一个中间 ASP 页面,它在使用 JavaScript 加载文档时将会话变量发布到我的 Default.aspx。
  • 不一定有安全风险,请务必在发送和接收端之间使用某种形式的加密
【解决方案2】:

几个解决方案...,这是最近的一个

http://weblogs.asp.net/lichen/archive/2011/10/30/sharing-session-between-asp-classic-and-asp-net-using-asp-net-session-state-server.aspx

还有其他解决方案,google for session share asp.net asp 你会发现很多解决方案,包括ms自己的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 2014-10-14
    • 2016-08-31
    • 2013-01-31
    • 1970-01-01
    相关资源
    最近更新 更多