3

我已经建立了一个网站,现在客户想要将它分成三个不同的域。做这个的最好方式是什么?这就是我到目前为止所拥有的。

  • c:/website1/ 指向 www.website1.com
  • c:/website1/vd1/ 指向 www.website2.com
  • c:/website1/vd2/ 指向 www.website3.com

我正在使用的网络主机已通过以下方式完成此操作,但现在我遇到了一堆错误,似乎它没有看到 App_code 文件夹。我需要做很多改变吗?这对位置参考有何影响?

4

2 回答 2

3

您遇到的问题是,通过像您所做的那样配置您的站点,www.website2.com 和 www.website3.com 是单独的应用程序,并且看不到 /vd1/ 或 /vd2/ 之外存在的任何内容或代码分别(所以是的,那将是 c:\website1\ 中的 /app_code/ 文件夹,以及可能在其中的任何图像、css、用户控件、母版页等)。

如果您共享的只是 /app_code/ 文件夹中的一些逻辑,您能否将其复制到 Visual Studio 中的新项目中?理想情况下,您希望创建一个新的类库项目,并在其中包含 .cs 文件。将其编译到它的 .dll 文件中,然后在您的网站项目中,添加对该库的引用。

但是,这不适用于用户控件或您可能想要使用的其他常见页面(例如登录、注册等)。

然后确保在每个虚拟目录中创建一个 /bin/ 文件夹,并将库也复制到那里。您可能还需要让您的虚拟主机将它们配置为 www.website1.com 中的应用程序。

编辑以回复评论

那么是的,您可能确实有很多工作要做,但是在不知道为什么要将网站的某些部分拆分到不同域的原因的情况下,我真的无法提供有关如何做的解决方案那 - 正如Bryan在下面指出的那样,您可以将多个域(称为主机头)映射到 IIS 中的单个站点,因此您可以将所有三个域都指向同一个根。

如果您希望拥有不同的外观和感觉,您可能希望拥有一个从 System.Web.UI.Page 继承的核心“Base Page”类型类,并让您的页面继承自该类,然后,您可以根据 URL 中的 ServerName 换出模板 - 例如,如果您使用 MasterPages,则需要在 OnPreInit 方法中执行此操作。

如果需要,您还可以在其中添加其他逻辑以确保将用户发送到站点的正确部分。

于 2010-03-08T22:39:12.383 回答
0

仅仅因为您有多个域并不意味着您需要单独的应用程序。这些虚拟目录有什么意义?IIS 很乐意为同一个应用程序提供多个域。

于 2010-03-09T01:43:56.973 回答