代码之家  ›  专栏  ›  技术社区  ›  Amith George

如何仅使用2个虚拟目录托管多个webapps

  •  1
  • Amith George  · 技术社区  · 16 年前

    我的共享主机只允许我创建2个虚拟目录。我想托管多个webapps…比如说一个ASP.NET MVC博客、一个论坛、一个个人网站等…

    难道没有其他的方法可以做到这一点吗?我不能简单地将博客文件夹转移到我的一个虚拟目录,然后在线访问它吗??

    2 回复  |  直到 16 年前
        1
  •  2
  •   Peter    16 年前

    对于ASP.NET Web应用程序,通常每个应用程序都位于其自己的虚拟目录中,作为应用程序的起点。

    从技术上讲,您可以通过以下两种方式之一在同一应用程序起点上“返回”两个应用程序:

    1. 将每个应用程序的所有文件放在同一目录(以及相应的子目录)中。

    如果您没有任何重叠的文件,您可以摆脱这个问题。当然,您可能不会使用默认或索引页等文件,而且无论如何,这会非常混乱。

    1. 将每个应用程序的所有非二进制文件放在适当的子目录中,二进制文件放在主虚拟机的\bin目录中。

    只有当每个应用程序的二进制文件不按名称重叠,并且程序集(两个不同的程序集按文件名,但具有相同的命名空间)之间没有命名空间模糊冲突时,才能执行此操作。如果您试图使用两个不同的应用程序,则后者的可能性要小得多。

    后一种解决方案的最大问题是,应用程序中使用应用程序根引用的任何部分都将中断。当一些代码试图基于应用程序根引用(如映像)解析对某个资源的引用时,

    ~/images/logo.gif
    

    ~将解析为虚拟目录,但不包括应用程序所在的附加(非虚拟和非应用程序起始点)子目录。因此,不要这样:

    /vd1/app1/images/logo.gif
    

    你最终会得到这样的结果:

    /vd1/images/logo.gif
    

    显然,这行不通。

    所以…如果你能将两者放在同一个虚拟目录中,你就不会破坏任何一个应用程序,但是,你必须检查文件冲突等等。如果没有单独的应用程序起始点,可能的命名空间冲突将不可避免。

        2
  •  0
  •   Ferruccio    16 年前

    不能将每个应用程序都放在虚拟目录中的单独子目录中。如果你有 http://server.com/vd1 ,你可以像 http://server.com/vd1/app1 , http://server.com/vd1/app2 等。