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

时间:2008-10-26 10:35:57

标签: iis virtual-directory

我的共享主机只允许我创建2个虚拟目录。我想托管多个webapps ...说一个asp.net mvc博客,一个论坛,一个个人网站等......

还有其他办法吗?我只是将博客文件夹ftp到我的一个虚拟目录然后在线访问?

2 个答案:

答案 0 :(得分:2)

对于ASP.NET Web应用程序,通常每个都将存在于自己的虚拟目录中,该目录充当应用程序的起点。

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

  1. 将每个应用程序的所有文件放在同一目录(和相应的子目录)中
  2. 如果您没有任何重叠的文件,您可以侥幸逃脱。当然,你很可能不会使用默认或索引页等文件。无论如何这都会非常混乱。

    1. 将每个应用的所有非二进制文件放在相应的子目录中,将二进制文件放在主虚拟的\ bin目录中。
    2. 只有当每个应用程序的二进制文件没有按名称重叠并且程序集之间没有命名空间歧义冲突时(两个不同的程序集按文件名,但具有相同的命名空间),您才能够这样做。如果你试图捎带两个不同的应用程序,后者不太可能发生。

      我在后一种解决方案中看到的一个大问题是应用程序中使用应用程序根引用的任何部分都会破坏。当某些代码尝试基于应用程序根引用(例如

      )解析对某些资源(如图像)的引用时
      ~/images/logo.gif
      

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

      /vd1/app1/images/logo.gif
      

      你最终会得到这个:

      /vd1/images/logo.gif
      

      显然,这不起作用。

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

答案 1 :(得分:0)

您不能将每个应用程序放在任一虚拟目录中的单独子目录中。例如如果您有http://server.com/vd1,则可以将其分区为http://server.com/vd1/app1http://server.com/vd1/app2等。