【问题标题】:How do I set up for sharing code (ASP.NET) across multiple domain names?如何设置跨多个域名共享代码 (ASP.NET)?
【发布时间】:2010-03-08 22:06:30
【问题描述】:

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

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

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

【问题讨论】:

  • 您可能需要将 vd1 和 vd2 设置为应用程序目录。

标签: asp.net virtual-directory


【解决方案1】:

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

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

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

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

编辑以回复评论

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

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

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

【讨论】:

  • 我需要共享的不仅仅是 app_code 文件夹。我有很多管理页面(实际上是整个 CMS),我需要将这些页面复制到每个虚拟站点。我在想我也许应该根据用户来自的域将用户重定向到正确的“主页”页面。似乎会有更好/标准的方式来做到这一点。
【解决方案2】:

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

【讨论】:

  • 简单毕竟是最好的。这就是我最终做的。只需为具有不同母版页的每个域制作单独的登录页面。有些重复,但还不错。
猜你喜欢
  • 2010-09-21
  • 2011-05-05
  • 2011-11-27
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 2018-07-02
  • 1970-01-01
  • 2016-08-01
相关资源
最近更新 更多