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

如何仅使用2个虚拟目录来托管多个Web应用程序

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

    我的共享主机只允许我创建2个虚拟目录。我想托管多个网络应用程序。..比如说asp.net mvc博客、论坛、个人网站等。。。

    没有别的办法吗?我不能简单地将博客文件夹ftp到我的一个虚拟目录中,然后在线访问吗??

    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 等等。