2012-03-20 35 views
2

我們正在數據中心的不同機器上運行我們服務的多個實例(作爲.exe文件實現)。但是,我們希望將此.exe文件的配置參數存儲在中央位置(而不是在每臺計算機的.exe.config中)。使用.NET ConfigurationManager從字符串中讀取設置,而不是從app.config文件中讀取設置

爲此,我們計劃將.exe.config文件的內容移至中央存儲庫(Active Directory或SQL)中的屬性,並使所有機器上的.exe運行在從此存儲庫讀取的所有機器上。

我想重複使用所有用於讀取/寫入配置信息的現有類(使用ConfigurationManager,ConfigurationProperty等,基本上使用整個.NET配置框架) - 但是,而不是從.exe.config文件中加載它(這是默認情況下 - 我希望它從我將從中央存儲庫中檢索的XML blob的字符串值加載它。

我試圖找到使用ConfigurationManager API的方法,但無法' t找到任何可以從一個字符串加載配置部分的東西。任何指針?

+0

您需要一個不同的SettingsProvider。有一個示例,應該提供足夠的關於如何實現自己的提示:http://msdn.microsoft.com/en-us/library/ms181001%28v=vs.90%29.aspx – 2012-03-20 01:56:51

回答

0

我想你可以編寫自己的ConfigurationSection wi然後從你的中央倉庫加載真實的配置數據。

或者,您是否有某種集中式部署系統來安裝各種服務器上的軟件?你的服務如何部署?您應該尋找已經解決您的問題的現有工具,而不是增加軟件的複雜性。

+0

感謝Andrew的評論。儘可能多地重複使用現有的基礎設施是我們的目標。我們的二進制文件通過集中式腳本發佈到我們的生產數據中心。目前,我們在數據中心機器上部署.exe和.exe.config文件。問題是沒有中央的方法來控制.exe的配置,我們不想在每次想要更改配置時都重新部署.exe.config文件。 此外,配置代碼已經利用了.NET配置部分。 – 2012-03-21 21:13:56

0

儘管我懷疑這是它的用意,但我們在使用ProtectedConfigurationProvider的項目中已經完成了這項工作。基本上,這個類應該允許你加密你的配置文件,但我們只需要將Decrypt方法連接到我們的數據庫並返回配置信息。有關實施的說明,請參閱this。這感覺有點冒險,但是如果不完全重寫所有配置解析邏輯,我們就找不到其他任何方式。

相關問題