0

我们为我们的各个公司/部门提供了几个不同的 Intranet 站点。它们之间的许多内容都是独一无二的,但它们确实有一些共享的组件。

我们当前的部署设置(很糟糕)涉及使用 Visual Studio 中的复制网站工具在项目目录和服务器上的部署位置之间复制/同步文件。然后在服务器上的 IIS 中,我们可以设置虚拟目录指向共享项(主要是 .aspx 页面)。这些页面在站点的根目录中查找标准母版页,因此可以在具有各自品牌的每个单独站点中正常工作。

几个例子:

  • /假期日历
  • /电话目录
  • /控件(.ascx 文件)

虽然它在生产中运行良好,但由于多种原因它很糟糕:

  • 复制网站工具很糟糕。
  • 您无法在本地调试这些组件,因为它们实际上并不存在于站点中。
  • 该站点没有预编译,这带来了明显的性能问题。

所以我想扔掉所有的废话,转而使用预编译的站点,通过一个 Web 部署项目将所有内容都放在服务器上。这就提出了如何处理共享组件的问题。我很确定在这种环境中我无法摆脱虚拟目录的伎俩,坦率地说,我真的不想这样做。

如何使 .aspx/.ascx 文件和关联的图像/脚本/CSS 资源的子目录有点像类库?假设我将 VacationCalendar 目录中的所有内容放入其自己的项目/解决方案中,然后让每个 Intranet 站点导入它并使所有这些文件在 /VacationCalendar 路径下可用。有没有什么方法可以做这样的事情而不会让人头疼?

我真的不想将所有这些站点合并到一个解决方案中,因为总是有可能需要在源代码控制中限制访问。

4

2 回答 2

0

免责声明-我没有尝试过。

在他们自己的项目中创建共享目录作为子目录。将这些项目部署到禁用站点下的网络服务器,但从活动站点链接到那里的实际子目录。

所以在 IIS 中你可以有

+ - DisabledWebsite
|   |
|   + --- PhoneProject
|         |
|         + --- PhoneDir (at c:/webs/PhoneProject/PhoneDir
|
+ - EnabledSite
    |
    + --- RealProject (bound to http:something.com for example)
          |
          +-- PhoneDir (virtual linked to c:/webs/PhoneProject/PhoneDir

然后,您可以编译 PhoneProject 并将其与 RealProject 分开部署。您可能还必须为 PhoneProject 提供一个单独的命名空间,并将其编译后的 dll 放入 RealProject/bin 目录。

于 2012-09-14T23:23:17.253 回答
0

是不是很明显或者我的想法很糟糕。反正:

制作一个母版页,链接所有网站(预编译)并拥有:

  • 在保存在某个特定目录中的每个站点上上传(仅适用于该站点)
  • 母版页上的全局上传,将所有文件保存在同一目录中(每个人都可用)

母版页可以有一个所有共享资源的目录,并且每个站点可以有一个不同的文件夹。没有混乱。您甚至可以要求登录某些目录,并设置权限

于 2012-09-14T15:20:25.793 回答