经典ASP Intranet和新ASP.NET应用程序

时间:2020-03-06 14:58:10  来源:igfitidea点击:

我们有一个现有的经典ASP内部网,其中包含数百个页面。它的目录结构如下所示:

/root
    app_1
    app_2
    ...
    img
    js
    style

显然,app_1等在实际目录结构中具有更好的名称。

即使许多应用程序具有不同的行为,它们都属于同一Intranet,因此通过包含通过/ style的样式表,通过/ img的图像和通过/ js的客户端脚本,可以共享相同的外观。

当我想在ASP.NET中添加Intranet应用程序时,麻烦(至少对我来说)来了。

最终,我想要这个结构:

/root
    app_1
    app_2
    dotnetapp_1
    dotnetapp_2
    ...
    img
    js
    style

在我看来,ASP.NET"应用程序"喜欢将自己与周围的一切分离(这可能只是我对它们的方式的理解)。我们在Visual Studio中创建一个新的"项目",就像我们在我要使用的实际根目录下有一个新的"根目录"。就像这个新应用程序一样,它是一个独立的东西,具有自己的图像和样式,无所不包。但是,我希望它成为现有Intranet的一部分。

最终,我希望能够使整个经典ASP内部网成为"根",并拥有仍可以访问/ style和/ img的ASP.NET"子应用程序",而且我猜对于ASP.NET,我将拥有/ masterpages 。

我以前尝试过此方法,但是当我将现有Intranet根目录设为ASP.NET项目根目录(通过File-> Open->网站)。我很乐意使用VS 2008 SP1编辑我现有的经典ASP Intranet(我目前使用出色的Notepad ++),因为我想更多地使用VS,但是我想这并不是绝对必要的。

我还尝试将每个新的ASP.NET应用程序本身视为一个应用程序,有效地使/ dotnetapp_1目录成为该应用程序的"根"(同样,通过VS2008中的File-> Open-> Web Site)。但是,当我尝试引用/ masterpages时,VS抱怨了,因为它"属于另一个应用程序"。我想通过在每个"指向"根目录/ masterpages的ASP.NET目录中添加一个虚拟目录来解决问题,但是我不确定VS在执行此操作时是否能够愉快地提供所见即所得的编辑,而不是进行复制我添加到Intranet的每个ASP.NET应用程序中的母版页的内容。

我也很有可能会访问.NET MVC框架,因此请在考虑该框架的情况下提供任何答案。我希望"项目"在MVC中不是很重要,而只是一堆文件,这些文件创建了一个对整体(即内部网)有贡献的应用程序。

因此,问题是:如何最好地将ASP.NET应用程序添加到现有的经典ASP Intranet(我不关心经典ASP和ASP.NET之间的会话共享的技术性,仅关注目录和目录的结构布局)。项目),并能够在Visual Studio 2008 SP1中编辑这些单独的应用程序,而又使这些应用程序通过通用的Intranet外观彼此"相关" *?

  • 请不要仅仅发布答案"使用MasterPages"。我很欣赏MasterPages是.NET在同一应用程序中相关页面之间共享样式的方法(而且很有可能)。我明白了。我正在寻找的是将ASP.NET应用程序尽可能平滑地添加到现有Intranet中的最佳方法,这使编辑每个应用程序变得简单,并且每个应用程序可以(如果可能)共享一个Intranet通用样式。

解决方案

一种解决方案是使用IIS管理器配置网站(由Visual Studio为ASP.NET应用程序创建),并为每个公用文件夹添加一个虚拟目录,以便它们(通过虚拟目录的"虚拟"性质)将"显示"为与ASP.NET应用程序位于同一根文件夹中。

/root
  app_1
  app_2
  dotnetapp_1
    <virtual>img
    <virtual>js
  ...
  img
  js
  style

如果我们需要批量执行此操作,则可以编写IIS脚本或者编辑XML文件,而且我敢肯定,必须有一种更优雅的方法来执行类似的操作,而无需太多的鼠标操作!

由于ASP.NET现在是Microsoft标准的Web开发平台,因此最好从一个全新的ASP.NET网站开始,然后将现有的ASP页面和文件夹导入其中。一旦设置并运行,就可以在ASP.NET中添加新功能。

微软了解到,有些客户会在一段时间内混合使用经典ASP和ASP.NET,他们通过使经典ASP页面在ASP.NET站点中工作来满足这种需求。我们尝试做的是与此相反(使ASP.NET在ASP中运行,排序),并且我们已经遇到了麻烦。

我们不能将asp.net网站作为虚拟目录运行吗?

www.site.com/dotnetapp/

dotnetapp是一个完全独立的虚拟目录吗?

几种不同的方法可以做到这一点:

  • 如果列出的文件夹结构是所需的Web文件夹结构,则任何ASP.NET应用程序都可以简单地引用/root/js/whatever.js或者../js/whatever.js,它将进入我们已经存在的文件夹有根。这是已经提到的虚拟目录解决方案的替代方法。这是一个相当混乱的解决方案,我在当前工作中继承的一些项目都可以做到这一点。
  • 在上一份工作中,我管理了一个经典的ASP / ASP.NET混合应用程序了几年,我通过在根目录下创建一个ASP.NET Web应用程序并将其所有ASP页面移入其中来做到这一点。我们要创建的任何"子应用程序"都应该只是该单个项目中的文件夹。 [ASP页面在VS2008中不再具有颜色编码,这确实很烦人。]