2009-11-22 191 views
3

情況如何遷移web.config?

我們使用遷移來更新數據庫架構和配置文件,我們的Web應用程序的所有部署。現在我們在遷移web.config時遇到了問題。

當前實現

遷移過程執行以下操作:從web.config中

  1. 打開數據庫連接
  2. 讀取配置到配置對象
  3. 檢索所有遷移
  4. 迭代遷移
    1. 更新數據庫模式
    2. 更新配置對象(數據庫連接作爲參數傳遞)(配置對象作爲參數傳遞)
  5. 保存配置對象
  6. 關閉數據庫連接

當然,有很多代碼可以確保在出現問題時遷移不會造成麻煩。不用擔心。保存配置時重新啓動Web服務器也不是問題。

問題

的問題是,它似乎並不可能通過配置對象,以便在web.config中的某些變化。就像添加一個位置。

可能的解決方案

我的想法現在不通過配置對象,但* .config文件作爲XML文檔的字典。然後,遷移可以更改原始xml。

擔心

我不太退出對這種做法,因爲配置對象做了一些配置數據完整性檢查。使用raw xml時,此功能會丟失。

問題

這是最好的方法?

+1

+1一個清晰明確的問題。 – 2009-11-22 21:41:42

回答

2

我不會想到「最佳」。這是一個持續的改進。

我會驗證xml文檔的完整性字典。

+0

任何投下的理由? – Saar 2009-11-23 16:44:43

+0

驗證xml文檔確實是一個好主意!謝謝。持續整合意味着什麼?順便說一句:不知道反對票是什麼。 – Florian 2009-11-23 19:38:52

+0

對不起。糾正。我想說的是持續的改進。 – Saar 2009-11-23 19:55:16

0

有幾個選項:

  1. 使用Windows窗體程序修改網站。配置(這是我們採取的方法)

  2. 請參見下面的文章:How do you modify the web.config appSettings at runtime?

現在改變web.config中可能會重新啓動應用程序域。但是,您可以通過禁用運行時掃描來停止該操作。

+0

謝謝你的迅速回答。但是,請您詳細說明您的答案與我的問題有何關係。 – Florian 2009-11-22 22:20:11

+0

我以爲你想在運行時改變web.config。 – Samuel 2009-11-22 23:09:37

+0

這是真的,那不是問題。問題在於配置類部分是「只讀」的。似乎沒有可能做出我們需要的所有更改。就像添加一個位置。 – Florian 2009-11-23 19:35:54

1

是的,一個答案是直接使用XML或反射,如討論here。最後,「做最簡單的事情,可能工作」...