ASP.NET Web.config 內容轉換

當你在 Visual Studio 2010 中建立一個 ASP.NET Web 應用程式專案時,預設會產生三個組態檔:Web.config、Web.Debug.config、Web.Release.config(無專案式網站無此功能)。

一般而言,開發時期就只要編輯 Web.config 的內容,等到需要部署至正式環境時,才需要編輯 Web.Release.config 的內容。至於 Web.debug.config 的內容是否要編輯,就看是否需要部署至其他的測試伺服器。

你甚至可以增加其他組態檔,例如供測試機使用的 Web.Testing.config,或者供預備機(staging server)使用的 Web.Staging.config。

欲增加其他組態檔,必須先利用 Configuration Manager 來增加組態名稱。你可以在 Solution Explorer 中的 Solution 名稱上點右鍵,再選 Configuration Manager:
接著按下圖的操作來為專案新增一個組態名稱:


定義好新的組態名稱後,在 Web 應用程式專案的 Web.config 項目上點右鍵,就會看到 Add Config Transforms。它會直接幫你加入新的組態檔,如下圖:

如果你發現 Add Config Transforms 是 disabled,那就表示目前定義的組態名稱都已經有對應的組態檔了,除非你再定義新的組態名稱,否則這項功能是無法使用的。

寫點程式測試看看。在 Web.config 中加入連線字串的參數:
<connectionStrings>
    <add name="Northwind" connectionString="sever=localhost;database=Northwind;uid=sa;"/>
</connectionStrings>

然後是 Web.Release.config:
<connectionStrings>
    <add name="Northwind" connectionString="server=192.168.1.10;database=Northwind;uid=sa;"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>

轉換的語法暫不細究,先拿一個網頁來測試,例如:Default.aspx。在 Page.Load 事件中撰寫程式碼,將連線字串的內容秀在頁面上:
Imports System.Configuration
……
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    Response.Write("連線字串: " & 
        ConfigurationManager.ConnectionStrings("Northwind").ConnectionString)
End Sub

然後將此 Web 專案的 Active 組態切換成 Release,建置部署套件後,利用 One-Click Publish 將網站發行至正式環境的伺服器。瀏覽此網頁時,觀察顯示的連線字串是否跟開發時期的連線字串不同。

Web.config 的轉換語法可參考 MSDN:http://msdn.microsoft.com/zh-tw/library/dd465326.aspx

沒有留言:

技術提供:Blogger.
回頂端⬆️