2012-09-14 61 views
0

我們爲各個公司/部門提供幾個不同的Intranet站點。許多內容在它們之間是唯一的,但它們確實有一些共享組件。在多個站點之間共享目錄

我們當前的部署設置(很糟糕)涉及使用Visual Studio中的複製網站工具在項目目錄和服務器上的部署位置之間複製/同步文件。然後在服務器上的IIS中,我們可以設置指向共享項目(主要是.aspx頁面)的虛擬目錄。這些頁面在網站的根目錄中查找標準母版頁,因此可以在每個單獨的網站中以其各自的品牌效果正常工作。

舉幾個例子:

  • /VacationCalendar
  • /的phonedir
  • /控件(.ascx文件)

雖然它在生產好了,它吸收了數原因:

  • 複製網站工具su中正。
  • 您不能在本地調試這些組件,因爲它們實際上並不存在於站點中。
  • 該網站未預編譯,這帶來了明顯的性能問題。

因此,我想拋棄所有的廢話,並轉向使用預編譯的網站,使用Web部署項目將所有內容放在服務器上。這引發瞭如何處理共享組件的問題。我敢肯定,在這種環境下,我無法擺脫虛擬目錄的詭計,坦率地說,我並不想這麼做。

如何製作.aspx/.ascx文件的子目錄和關聯的圖像/腳本/ CSS資源的行爲類似於類庫?假設我將VacationCalendar目錄中的所有內容放入其自己的項目/解決方案中,然後讓每個Intranet站點導入並使所有這些文件在/ VacationCalendar路徑下可用。有沒有什麼辦法可以做到這些沒有重大頭痛的事情?

我真的不想將所有這些網站合併成一個解決方案,因爲總有可能需要限制源代碼管理訪問。

回答

0

免責聲明 - 我沒有試過這個。

在您自己的項目中創建您的共享目錄作爲子目錄。將這些項目部署到禁用站點下的Web服務器,但鏈接到實際站點上的實際子目錄。

所以在IIS中你可以有

+ - DisabledWebsite 
| | 
| + --- PhoneProject 
|   | 
|   + --- PhoneDir (at c:/webs/PhoneProject/PhoneDir 
| 
+ - EnabledSite 
    | 
    + --- RealProject (bound to http:something.com for example) 
      | 
      +-- PhoneDir (virtual linked to c:/webs/PhoneProject/PhoneDir 

然後,您可以編譯PhoneProject和RealProject單獨部署它。您可能還必須爲PhoneProject擁有一個單獨的名稱空間,並將其編譯後的dll放入RealProject/bin目錄中。

+0

這大致就是我們現在正在做的,我甚至在Microsoft知識庫文章中看到過它,所以我猜這是唯一的方法。作爲一個後續問題,有沒有一種方法可以使Web部署項目以這種方式工作?我真的厭惡複製網站工具,並希望擺脫它。 – db2

0

難道這不明顯,或者我的想法很糟糕。總之:

做一個母版頁鏈接的所有網站(預編譯),並具有:

  • 上傳的,在某些特定的目錄保存每個站點(網站只)在母版頁
  • 全局上傳將所有文件保存在相同的目錄中(對所有人都可用)

主頁面可以爲所有共享資源設置目錄,並且每個站點可以有不同的文件夾。沒有混淆。你甚至可以要求登錄一些目錄,並設置特權

相關問題