6

我们有一个由数百个页面组成的现有经典 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(我目前使用出色的Notepad++)编辑我现有的经典 ASP 内部网,因为我想更多地使用 VS,但我想这不是绝对必要的。

我还尝试将每个新的 ASP.NET 应用程序单独视为一个应用程序,有效地将 /dotnetapp_1 目录作为应用程序的“根”目录(同样,通过 VS2008 中的文件->打开->网站)。但是,当我尝试引用 /masterpages 时,VS 会抱怨,因为它“属于另一个应用程序”。我想我通过在每个“指向”根 /masterpages 的 ASP.NET 目录中添加一个虚拟目录来解决它,但我不确定 VS 在我这样做时是否能够愉快地提供所见即所得的编辑,而不是制作副本我添加到 Intranet 的每个 ASP.NET 应用程序中的母版页。

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

所以,问题是:如何最好地将 ASP.NET 应用程序添加到现有的经典 ASP 内部网(我不关心经典 ASP 和 ASP.NET 之间会话共享的技术细节,只关心目录的结构布局和项目),并能够在 Visual Studio 2008 SP1 中编辑这些单独的应用程序,并且通过通用的 Intranet 外观让这些应用程序彼此“相关”*?

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

4 回答 4

2

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

Microsoft 了解某些客户将在一段时间内混合使用经典 ASP 和 ASP.NET,他们通过使经典 ASP 页面在 ASP.NET 站点中工作来满足这种需求。您正在尝试做的是与此相反的事情(让 ASP.NET 在 ASP 中工作,排序),您已经遇到了困难。

于 2008-10-01T12:25:11.973 回答
2

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

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

如果您需要批量执行此操作,您可能可以编写 IIS 脚本或编辑 XML 文件,而且我确信必须有一种更优雅的方式来执行类似的操作,并且不需要太多的鼠标工作!

于 2008-10-01T11:52:07.167 回答
0

您不能将 asp.net 站点作为虚拟目录运行吗?

www.site.com/dotnetapp/

dotnetapp 在哪里是一个完全独立的虚拟目录?

于 2008-12-12T18:42:45.370 回答
0

几种不同的方法来解决这个问题:

  1. 如果您列出的文件夹结构是所需的 Web 文件夹结构,那么您的任何 ASP.NET 应用程序都可以简单地引用 /root/js/whatever.js 或 ../js/whatever.js 并且它会到达您已经存在的文件夹有根。这是已经提到的虚拟目录解决方案的替代方案。这是一个相当混乱的解决方案,我在当前工作中继承的一些项目就是这样做的。
  2. 在之前的工作中,我管理一个混合的经典 ASP/ASP.NET 应用程序几年,我通过在根目录下创建一个 ASP.NET Web 应用程序并将我所有的 ASP 页面移动到其中来做到这一点。您想要制作的任何“子应用程序”都应该只是这个单个项目中的文件夹。[ASP 页面在 VS2008 中不再有颜色编码,这真的很烦人。]
于 2009-05-26T05:56:42.140 回答