添加Classic ASP Application的功能

时间:2010-09-03 11:21:31

标签: asp.net asp-classic webforms migration

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

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

2 个答案:

答案 0 :(得分:6)

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

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

拥有一个混合网站是一个非常棘手的前景,而不是一个可以掉以轻心的。仔细踩或者你真的会把自己放在泡菜中。

编辑:部分混合示例说明

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

  1. 由于母版页将控制基本布局,菜单,页眉,页脚,我们需要从任何页面中删除这些元素。
  2. 新会话要求与现有会话功能不兼容。
  3. 必须仍然要求经典的asp页面遵守.Net formsauthentication。
  4. 我用以下解决方案解决了这些问题:

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

答案 1 :(得分:0)

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