在Web.config中設定開發與正式環境的參數差異。
由於在寫前一編文章「ASP.NET 連線字串加密」的候看見有趣的connectionStrings,讓我又想再寫一編關於連線字串的文章
其實早期我也是這麼做的,實際上運作起來沒什麼太大的問題,就是切來切容易造成人為錯誤
沒加密的話,還會一次把很多機器的帳密大放送
開發人員應該要善用工具來降低人為操作錯誤進而提升效率
由於在寫前一編文章「ASP.NET 連線字串加密」的候看見有趣的connectionStrings,讓我又想再寫一編關於連線字串的文章
其實早期我也是這麼做的,實際上運作起來沒什麼太大的問題,就是切來切容易造成人為錯誤
沒加密的話,還會一次把很多機器的帳密大放送
開發人員應該要善用工具來降低人為操作錯誤進而提升效率
地表最強開發工具VisualStudio不是假的,它提供了方便的組態設定,能夠讓我們優雅地漫遊在開發與正式環境之間
如果用Debug和Release就足以應付的話,可以跳過步驟1~4
我習慣將開發環境簡單定義成三種
- Debug:本地環境
- Development:測試環境
- Release:正式環境
因此會需要新增一個「測試環境」組態
1.打開Configuration Manager
2.選<New...>
3.通常建立Development的時候,已經在本地開發到一定程度了,所以設定檔可以拷貝Debug的
4.右鍵點擊Web.config後選Add Config Transform
5.剛才的Development就會跑出來了
6.設定Web.組態名稱.config
以Web.Development.config為例,如果我希望發佈到測試環境的connectrionStrings DB位置能改變,就在Web.Development.config中設定
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="DbEntities" xdt:Transform="Replace" connectionString="測試環境的DB連線字串" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
紅字是不可缺少的參數,Replace代表要替換的地方,如果是appSettings中的參數可以用指定屬性的方式
<appSettings>
<add key="FooKey" value="Hello" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="DbEntities" xdt:Transform="Replace" connectionString="測試環境的DB連線字串" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
紅字是不可缺少的參數,Replace代表要替換的地方,如果是appSettings中的參數可以用指定屬性的方式
<appSettings>
<add key="FooKey" value="Hello" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>
7.最後發行網站,打開Web.config檔就能發現不同的地方了:)