前言
在工作上因為需要連線到不同資料庫做測試,所以有時候在開發會去更改Web.config裡面的內容。當時就有發現測試環境的Web.config(後續用Web.Test.config代替,這名字是我們公司取的)和Web.config裡面的內容有些許不同。Web.Test.config裡面有<…. xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>這串看起來很像亂碼的東西(你看不懂就說人家是亂碼xD),所以今天就來簡單紀錄一下Web.config的內容吧
簡介
Web.config是開發ASP.NET網站或應用程式時,對整個網站或應用程式的設定檔。在部屬時,因為保密起見並不會將原始碼隨專案一起釋出,而開發環境和部屬環境可能不同(e.g.資料庫不同)。
在.net中提供了儲存專案配置資訊的辦法,就是利用配置檔案。配置檔案的檔案字尾一般是.config,在ASP.NET中配置檔名一般預設是Web.config。每個web.config檔案都是基於XML的文字檔案,並且可以儲存到Web應用程式中的任何目錄中。在釋出Web應用程式時Web.config檔案並不編譯進dll檔案中。
Web.config在使用者端是無法看到的,也因為安全性關係,透過瀏覽器也是無法看到的。因為它本來就是給程式看的,不是也無法給使用者看
配置節點
Web.config是一個XML檔案,最上層節點是由「configuration」開始,configuration」裡面常見包含 「appSettings」、<system.web>、 「connectionStrings」
- 「appSettings」:紀錄專案的配置資訊,像我服務的公司就有用到
<add key = “AuthHost” value="https://www.google.com.tw/" /> <add key="webpages:Version" value="3.0.0.0" />
- <system.web>:網站執行時的一些配置
- 「connectionStrings」: 處理資料庫連線字串
- 這裡的標籤應該都要用角括號表示,但不知道為什麼只有<system.web>可以正常顯示...所以先暫時用「」表示,敬請見諒~
為何可以透過修改Web.config做到在不同環境的設定?
Web.config 檔包含的設定,通常需根據應用程式的執行環境而改變。 例如,部署 Web.config 檔時,可能必須變更資料庫連接字串或是停用偵錯功能。對於 Web 應用程式專案,ASP.NET 有提供工具,可在部署 Web.config 檔時自動化此項變更 (轉換) 程序。 對於要進行部署的每個環境,需建立轉換檔,以指定該環境的原始 Web.config 檔和所部署 Web.config 檔之間的差異。
-資料來源: Web 應用程式專案部署的 Web.config 轉換語法?redirectedfrom=MSDN)
Web 應用程式專案部署的 Web.config 轉換語法
轉換檔是XML 檔,其中指定 Web.config 檔在部署時應如何變更。 轉換動作是以 XML-Document-Transform 命名空間中定義的 XML 屬性指定,而該命名空間會對應xdt 前置詞和定義兩個屬性:Locator 和 Transform。
- Locator 屬性:指定想要以某種方式變更的 Web.config 項目或項目集
- Transform屬性:指定要對 Locator 屬性找到的項目做出何種處理
- Locator和Transform不會在Web.config出現
屬性語法
這邊只會說明我碰過的屬性,剩下的就請大家上微軟文件閱讀啦~
Locator- Match
- 語法:Locator="Match(comma-delimited list of one or more attribute names)”
- 用途: 選取對於指定之屬性具有相符值的項目。 如果指定了多個屬性名稱,則只會選取符合所有指定之屬性的項目
範例
<add key="HubToken" value="12345678" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
Transform-SetAttributes
- 語法: Transform="SetAttributes(comma-delimited list of one or more attribute names)”
- 用途: 將所選取項目的屬性設定為指定的值。SetAttributes 屬性可讓項目保持現狀,而只變更選取的屬性。
範例
<add key="HubToken" value="12345678" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
結論
在專案上如果有一些組態設定需要調整或想看該專案的資訊都可以進到Web.config和App.Config去查看
Reference
Web 應用程式專案部署的 Web.config 轉換語法?redirectedfrom=MSDN)
下面這篇有詳細說明Web.config裡面的tag,有興趣可以去拜讀一下!
Tai Blog