iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
自我挑戰組

Bug仔的筆記本系列 第 3

網站發布時,設定 Web.Config 依組態做內容替換

  • 分享至 

  • xImage
  •  

前一篇文章提到 ASP.NET 的預設範本中,除了 Web.Config 之外,還有 Web.Debug.config 和 Web.Release.config。後面兩個檔案,在發布的時候,依選擇組態不同,會對 Web.Config 內容進行替換的設定
https://ithelp.ithome.com.tw/upload/images/20220916/201204201B9YYGh67V.png

例如選擇 Release 時,會用 Web.Release.config 內的資料,對 Web.Config 做替換。要被替換的資料,主要是用 xdt:Locatorxdt:Transform 兩個 Attribute 做定位的。

Transform : 選擇修改的方式,例如: Insert(新增)、Replace(替換) 等
Locator : 選擇要修改的項目(選填)

依使用的 Transform 不同,Locator 是否必填也不同。

例如你想要替換 DB 的連線字串,把 AAA 改成 BBB,其設定這樣寫:

Web.config
<connectionStrings>
      <add name="MyDB"
        connectionString="AAA" />
</connectionStrings>

Web.Release.config
<connectionStrings>
      <add name="MyDB"
        connectionString="BBB"
        xdt:Transform="Replace" xdt:Locator="Match(name)"/>
</connectionStrings>

connectionStrings裡面可以是多筆的,代表:Locator 需要定位的條件,來找出需要替換的那項
Match表示 name 要同名時,才要把項目做替換。

詳細的設定可以看微軟的文件

有新組態時,建立新組態的 Web.config

如果你有自己新增的組態,例如叫 Test 組態,那就自己複製一份 Web.Debug.config,在自行改名為 Web.Test.config 即可。

參考資料
https://docs.microsoft.com/zh-tw/aspnet/web-forms/overview/deployment/visual-studio-web-deployment/web-config-transformations


上一篇
為什麼用 F5 偵錯時,Web.Config 沒有依 Debug 組態或 Releace 組態做內容替換?
下一篇
C#、ASP.NET 在操作 EXCEL 發生錯誤 Retrieving the COM class factory for component with CLSID
系列文
Bug仔的筆記本30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言