2010-03-08 93 views
3

我建立了一个网站,现在客户想要在三个不同的域之间进行拆分。做这个的最好方式是什么? 这是我到目前为止。如何设置跨多个域名共享代码(ASP.NET)?

  • C:/ WEBSITE1 /点www.website1.com
  • C:/ WEBSITE1/VD1 /点www.website2.com
  • C:/ WEBSITE1/VD2 /点www.website3 .com

我正在使用的虚拟主机已经完成了以下工作,但现在我收到了一堆似乎没有看到App_code文件夹的错误。我需要做出很多改变吗?这如何影响位置参考?

+0

您可能需要将vd1和vd2设置为应用程序目录。 – jrummell 2010-03-08 22:12:58

回答

0

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

+0

简单是最好的。这就是我最终做的。只为每个拥有不同主页的域创建了单独的登录页面。一些重复,但不是太糟糕。 – scojomodena 2010-12-28 21:43:48

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,并让你的页面继承从而代之以,您可以根据URL中的ServerName替换模板 - 如果您使用MasterPages,例如您需要在OnPreInit方法中执行此操作。

您还可以在其中添加额外的逻辑以确保用户被发送到网站的正确部分(如果这是要求)。

+0

我需要分享的不仅仅是app_code文件夹。我有很多管理页面(实际上是整个CMS),我需要将页面复制到每个虚拟站点。我在想,也许我应该根据用户的域名将用户重定向到正确的“主页”页面。它似乎会有一个更好的/标准的方式来做到这一点。 – scojomodena 2010-03-09 14:00:12