2011-05-24 62 views
3

我在IIS一樣多個網站,一個通用代碼庫和不同的配置文件

http://domainA.com 
http://domainB.com 

兩個網站,我想使用相同的代碼爲這些網站,但不同的web.config文件。這可能嗎?我將數據庫連接字符串等存儲在web.config文件中,應用程序中的所有其他代碼都是相同的。

我已經嘗試了一些不同的approches與創建一個文件夾結構類似

-Root 
    - Domain A 
    - web.config for domain A 
    - Code 
     - Virtual Directory to Source Code 
    - Domain B 
    - web.config for domain B 
    - Code 
     - Virtual Directory to Source Code 
- Source Code 

然後我將指向網站的域名A到「根/域A」和域B爲「根/域B」,但問題是,代碼必須訪問一級,如

http://domainA.com/Code/ 
http://domainB.com/Code/ 

任何想法?

+1

爲什麼你不想將網站發佈到兩個位置? – 2011-05-24 13:28:32

+0

今天我只有兩個網站,但我認爲他們會在未來更多。網站總是工作並具有最新版本的代碼是至關重要的,所以我希望儘可能簡化部署過程。 – 2011-05-24 13:46:43

回答

3

我將基於我的答案,假設您正在編寫自定義代碼,而不是使用開箱即用的解決方案(如DNN或SharePoint)。

想到保持通用代碼庫的一個解決方案是在數據庫中維護您的網站特定配置設置而不是web.config。您可以通過使用一組名稱/值對來保持數據庫結構的相當動態。您當然需要在設計應用程序時考慮到這一點,並在數據庫中進行規劃。這爲您提供了僅具有單個代碼庫以及單個web.config的優勢。如果您需要爲每個站點的單獨數據庫維護內容,則連接到這些內容數據庫的字符串信息可以是配置數據庫中的名稱/值對之一。

您甚至可以通過在IIS中爲所有域設置單個網站來進一步推進這一步(除非您將使用SSL,在這種情況下,單獨的IIS網站會更好)。您需要將主機標頭添加到網站,然後在代碼中查找主機頭以確定要使用的設置以及要提供的內容。您將失去創建單獨應用程序池的能力,因此您應該檢查您的要求,如果這對您的情況是可行的選擇。

這實際上與DNN和SharePoint的工作方式類似,但當然也可以在自定義應用程序中完成。

+0

所以,讓我看看我是否理解你Rob ...你的建議是重新發明輪子('這實際上是DNN和SharePoint如何工作的類似模型,但是當然也可以在自定義應用程序中完成。 ')而不是學習使用現有系統? – 2011-05-24 16:27:36

+1

**請注意我在第一句中所做的假設。**我不是說重新發明輪子。我說的是DNN和SharePoint都使用了一個類似於我所建議的模型(它們的實現都不同)。該應用程序可能具有完全不同於DNN或SharePoint的要求,並且使用其中的一個可能沒有意義。如果其中一個平臺適合需要,那麼肯定你應該使用其中的一個,但是如果你有自定義的功能,那麼我提出了一個可行的模型。 – Rob 2011-05-24 16:45:08

+0

主機標題可能是前進的方向。我會試着看看它是否有效。感謝您的評論。 – 2011-05-25 08:23:14

相關問題