如何跨多个域名设置共享代码(ASP.NET)?

时间:2010-03-08 22:06:30

标签: asp.net virtual-directory

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

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

我正在使用的webhost已经通过以下方式完成了,但是现在我收到了一堆看起来没有看到App_code文件夹的错误。我需要做出很多改变吗?这对位置参考有何影响?

2 个答案:

答案 0 :(得分:3)

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

如果您要共享的是/ app_code /文件夹中的某些逻辑,是否可以将其复制到Visual Studio中的新项目?理想情况下,您需要创建一个新的类库项目,并且只有.cs文件。将其编译到.dll文件中,并在您的网站项目中添加对该库的引用。

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

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

编辑以回复评论

然后是的,你可能确实在你面前做了很多工作,但不知道为什么你将网站的某些部分分成不同的域名的原因,我可以'我真的提供了一个如何做到这一点的解决方案 - 正如Bryan指出的那样,你可以将多个域(称为主机头)映射到IIS中的单个站点,这样你就可以让所有三个域指向同根。

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

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

答案 1 :(得分:0)

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