2010-03-08 106 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