IIS多個網站共用同一份程式
目前在運行的網站,因業務需求,獨出另一個網站及資料庫。在布署網站時會分別發佈到2個不同的資料夾。兩個資料夾的程式一模一樣,只差在web.config的ConnectionString不同。目前只有2個網站,布署工作還算簡單,未來若繼續擴增時,除了發行工作會越來越多,同步及除錯上的問題也是另一要考量的地方。
解決方式
1.Web.Release.config 使用transform移除連線字串
這是給發行時將原本的連線字串移除,並使用在IIS所設定的連線字串
<connectionStrings>
<add name="MyConn" xdt:Transform="Remove" xdt:Locator="Match(name)" connectionString="" />
</connectionStrings>
2.在IIS新增Root層級的連線字串
正式網站
預備網站
若不想用上述GUI的設定方式,可以透過PowerShell新增
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT' -location ConnIIsLab-PRD' -filter "connectionStrings" -name "." -value @{connectionString='Data Source=.;Initial Catalog=PRD;User ID=sa;Password=xxx';name='MyConn'}
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT' -location 'ConnIIsLab-STA' -filter "connectionStrings" -name "." -value @{connectionString='Data Source=.;Initial Catalog=STA;User ID=sa;Password=xxx';name='MyConn'}
測試程式
顯示目前網站的連線字串
ConnIIsLab-PRD
ConnIIsLab-STA