用于通用标记的ASP.NET虚拟目录

时间:2010-02-02 21:46:05

标签: asp.net virtual-directory

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

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

问题:我试图不复制每个网站的.aspx文件,并希望有一个/ care虚拟目录,其中包含每个网站都会使用的contact-us.aspx和faqs.aspx 。我见过this post from Scott Gu,但我正在寻找其他解决方案/想法。

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

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

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

3 个答案:

答案 0 :(得分:1)

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

这是一个很好的参考:

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

答案 1 :(得分:1)

这实际上非常难,我建议你咬紧牙关并使用scott gu的答案或使用我们选择的解决方案,这是使用subversion中的svn:externals属性从a导入目录“共享”存储库。 Subversion manual reference。如果您使用不同的版本控制系统,我猜它会有类似的东西,但在这种情况下你就是自己的。

答案 2 :(得分:0)

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

当我们共享HTML文件时,我们只链接到该文件,因为它会搞砸菜单(不同的网站有不同的菜单 - 我们只想要内容的HTML文件)。所以我创建了一个页面(例如“ShowContent.aspx”),它打开HTML文件,将内容作为字符串读取,并将字符串分配给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。

如果您的常用页面是数据输入表单,那么我担心您唯一的希望是将它们放在多个项目共享的公共源目录中。您将共享,但会在每个项目中发布文件。这可能很麻烦:你可能会在打破其他项目的过程中做出改变,因为他们现在有可能相互依赖。