1

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

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

4

2 回答 2

2

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

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

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

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

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

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

我看到后一种解决方案的一个大问题是应用程序中使用应用程序根引用的任何部分都会中断。当某些代码尝试根据应用程序根引用解析对某些资源(如图像)的引用时,例如

~/images/logo.gif

~ 将被解析到虚拟目录,但不包括应用程序所在的附加(非虚拟和非应用程序起点)子目录。所以代替这个:

/vd1/app1/images/logo.gif

你最终会得到这个:

/vd1/images/logo.gif

显然,那是行不通的。

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

于 2008-10-28T16:10:25.187 回答
0

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

于 2008-10-26T11:46:43.473 回答