2013-04-24 54 views
2

我有一個VS2012解決方案,其中包含我想要在單個Azure Web角色上發佈到多個網站的多租戶MVC Web項目。我已經改變了我.csdef以便它包含多個站點,像這樣:在將多租戶項目發佈到Azure時自定義web.config

<Sites> 
    <Site name="Web"> 
    <Bindings> 
     <Binding name="Endpoint1" endpointName="Endpoint1" /> 
    </Bindings> 
    </Site> 
    <Site name="Web2" physicalDirectory="..\..\..\[source dir]"> 
    <Bindings> 
     <Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="secondsite.com" /> 
    </Bindings> 
    </Site> 
</Sites> 

我的問題是:我怎麼能爲了部署不同版本的Web.config每個站點作爲發佈過程的一部分容納不同的租戶?

回答

0

我想告訴你以下幾點, 當涉及基於租戶的配置時,考慮讓數據庫中的配置比複製Web.config文件更理想。

如果您考慮使用純粹的多租戶形式,它使用單個代碼庫並在承租人ID標識的數據庫中維護所有基於租戶的配置,則不需要複製或創建Web副本.config文件。

該過程將如此,您可以通過登錄憑證識別租戶,然後使用該租戶ID來獲取配置元數據,然後將其應用於整個應用程序。

+0

非常感謝您花時間回覆,非常感謝。我的情況是,我需要解決問題中描述的問題,爲每個站點部署不同的web.config文件,而不是將架構更改爲更純粹的多租戶形式。 – 2013-05-14 08:34:27

+0

請看看下面的鏈接:http://stackoverflow.com/questions/10434553/multiple-instances-of-site-in-one-webrole-with-different-web-config – Saravanan 2013-05-14 09:01:37

0

我不確定這是一個特別優雅的解決方案,但最終我進行了兩步發佈過程。

在第一步中,我發佈到本地文件系統,並添加一個在CopyAllFilesToSingleFolderForPackage之後運行的自定義構建目標。在此目標中,我將打包文件複製到部署目錄(每個站點1個),並在每個克隆上執行TransformXml以更改Web.config。

第二步是簡單地將<Site physicalDirectory="..." />指向克隆的輸出文件位置,以將部署目錄用作源來發布到Azure。

相關問題