3

我有一些应用程序需要共享一组通用标记。

场景:我可能有 www.site1.com、www.site2.com 和 www.site3.com。在所有网站上,/care/contact-us.aspx 和 /care/faqs.aspx 将完全相同,但其他页面将完全不同。

问题:我试图不为每个站点复制 .aspx 文件,并希望有一个 /care 虚拟目录,其中包含每个站点将使用的 contact-us.aspx 和 faqs.aspx。我看过Scott Gu 的这篇文章,但我正在寻找任何其他解决方案/想法。

问题 1:将其设置为共享 /care 目录的最佳方法是什么?问题 2:关于共享背后代码的任何想法。

背景,如果您关心的话:在遗留应用程序(asp classic/vbscript)中,我们能够使用 /common 虚拟目录让站点共享公共标记和代码(因为它们都混合在 .asp 文件中)。

提前感谢任何帮助或想法!

4

3 回答 3

1

只需在 IIS 中为指向同一物理目录的每个应用程序设置一个虚拟目录。

这是一个很好的参考:

http://support.microsoft.com/kb/324785

于 2010-02-02T21:56:24.827 回答
1

这实际上很难,我建议你要么咬紧牙关,选择 scott gu 的答案,要么使用我们选择的解决方案,即使用 subversion 中的 svn:externals 属性从“共享”导入目录存储库。 颠覆手册参考。如果您使用不同的版本控制系统,我猜它会有类似的东西,但在这种情况下您只能靠自己了。

于 2010-02-02T22:26:11.290 回答
0

我使用虚拟目录在站点之间共享 HTML 和图像文件。要共享 ASPX 文件,情况会有所不同——而且更难。

当我们共享 HTML 文件时,我们不仅仅链接到该文件,因为它会破坏菜单(不同的站点有不同的菜单 - 我们只想要 HTML 文件的内容)。所以我创建了一个打开 HTML 文件的页面(例如“ShowContent.aspx”),将内容作为字符串读取,并将该字符串分配给 ASP 标签控件。如果您不在共享的 ASPX 文件中动态生成内容,这可能对您有效。

即使你这样做了,希望也不会消失。首先,创建一个仅包含常见 ASPX 文件的项目,构建它并将项目文件放置在已知位置 ( http://shared.yoururl.com )。现在,无需通过访问文件来提取内容,只需使用 WebRequest 对象读取内容即可:

        WebRequest wrContent = WebRequest.Create("http://shared.yoururl.com/CommonInformation.aspx");
        Stream objStream = wrContent.GetResponse().GetResponseStream();
        StreamReader objStreamReader = new StreamReader(objStream);
        string pageContent = objStreamReader.ReadToEnd();

然后在空白页上显示 pageContent。

如果您的公共页面是数据输入表单,那么恐怕您唯一的希望是将它们放在多个项目共享的公共源目录中。您将共享源代码,但会将文件与每个项目一起发布。不过,这可能会很混乱:您可能会在一个项目中进行更改,从而破坏其他项目,因为它们现在有可能相互依赖。

于 2010-02-02T22:01:39.760 回答