【问题标题】:Adding features around Classic ASP Application添加围绕经典 ASP 应用程序的功能
【发布时间】:2011-04-07 19:21:16
【问题描述】:

我将添加新页面并向当前页面添加功能。 我基本上想使用新技术,但我不知道如何将它添加到经典的 ASP 页面中

换句话说,我可以<#--include-->一个经典asp页面中的aspx页面吗?或者任何类似的东西,可能是在 ASP.NET 中创建用户控件并在经典 ASP 中使用它?

【问题讨论】:

  • 特别是哪些技术?

标签: asp.net asp-classic webforms migration


【解决方案1】:

您不应该将它真正添加到现有的经典 ASP 页面中。您可能希望执行从经典 ASP 到 .Net 的完整(但缓慢)迁移。否则,您可能只是想在新页面中完全添加新功能。如果您有一个模板网站,这可能会变得有点麻烦,因为您需要在 .Net 中重新创建这些模板,因为在同一个文件中混合 .Net 和经典是不可能的。

您最终可能会求助于 iframe,但这有时会使浏览器变得愚蠢。如果您的应用程序依赖于会话,则需要考虑这一点,因为 .Net 无法访问经典会话,除非您坚持原语(字符串/整数/等)并使用外部状态提供程序(如 SQL)来保存可以传递的带有sessionid的数据。

拥有一个混合网站是一个非常棘手的前景,不能掉以轻心。小心行事,否则你真的会陷入困境。

编辑:部分混合示例描述

我们有一个 700 多页的网站要从经典的 asp 转移到 Asp.Net 2.0。许多页面被分配时间在一个项目中完全转移,但有一些区域无法重构,必须适应。我们为新的 .Net 结构、数据库和业务对象库组合了一个母版页架构,然后开始传输。在合并经典的 asp 页面时,我们确定我们有一些需求。

  1. 由于母版页将控制基本布局、菜单、页眉、页脚,因此我们需要从引入的所有页面中删除这些元素。
  2. 新会话要求与现有会话功能不兼容。
  3. 仍然必须要求经典的 asp 页面遵守 .Net 形式的身份验证。

我通过以下解决方案解决了这些问题:

  1. 我们的应用程序针对特定客户,因此我们能够确定浏览器要求。这使我们能够使用 iframe 来保存经典的 asp 内容/应用程序,而不必担心 iframe 会在 Webkit 或 Firefox 或其他任何东西中让我们发疯。
  2. 为了适应会话要求,我们在 .Net 和经典 asp 中构建了一个小型加密/解密引擎,使我们能够加密“查询字符串”来来回传递会话信息。它不是超级安全,只是足以让临时用户不会想弄乱数据。此外,我们必须构建两个翻译文件。第一个翻译文件是一个 .Net 库静态方法,它将获取会话数据、提取必要的片段并创建查询字符串。第二个是经典的 asp 版本,旨在读取查询字符串、解析数据并直接创建会话原语。
  3. 为 .Net 设置经典的 asp 页面是一个服务器管理问题。为此,使用 formsauthentication 属性 protection="All" 应该就足够了,但我发现它仍然没有涵盖预期有其他处理程序的项目。所以我在 IIS 中添加了一个通配符映射来处理所有文件。从 IIS 网站的属性中,选择“主目录”并单击“配置”。在下一个窗口的底部是一个“通配符应用程序映射”框。单击插入并导航到用于查找 aspnet_isapi.dll 文件的 .Net 版本。这将强制所有文件针对此文件进行解析(除了启动身份验证请求之外,这是无害的)。

由于保密协议,我无法提供具体的代码示例,但这至少应该提供一些关于从这里去哪里的想法。

【讨论】:

  • 我可以<#--include-->经典asp页面中的aspx页面吗?或者任何类似的东西,可能是在 ASP.NET 中创建用户控件并在经典 ASP 中使用它?
  • @Ismail - 否,因为包含将尝试使用经典的 asp isapi.dll 来解析和运行脚本文件。 .Net 是一种编译语言,在单独的运行时中运行。这相当于尝试对 php 文件做同样的事情。你想要的不是不可能,只是非常棘手。当我这样做时,我的最终解决方案是使用 .Net(母版页)从头开始创建站点,然后将我的 asp 页面合并到 iframe 中(浏览器对我来说不是一个因素)。剩下的就是保护会话。
  • 你能用一个例子解释一下你是如何通过更新你的答案将asp页面合并到iframe中的吗?顺便说一句,我的网站很大,页面很多。
【解决方案2】:

您可以在 ASP.NET 应用程序中运行经典的 ASP 页面。您可以在 ASP.NET 中添加页面

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 2014-06-03
    • 2012-12-09
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多