2011-05-16 30 views
2

我目前使用RoleEnvironment.GetConfigurationSettingValue(propertyName)來獲取在我的WebRole配置文件(csdef + cscfg)中定義的設置的值。好的,聽起來不錯。Azure:我們可以在嘗試閱讀之前檢查設置是否存在?

如果設置存在,則工作正常,但如果未在csdef和cscfg中定義該設置,則會失敗並顯示異常。

我正在將現有的應用程序遷移到在web.config中具有許多配置設置的Azure。在我的代碼中,爲了讀取一個設置值,我想測試一下:如果它存在於webRole配置中(csdef + cscfg),我從這裏讀取它,否則從web.config中使用ConfigurationManager讀取它。 這將阻止從我的web.config遷移所有設置,並允許在部署應用程序時自定義一個設置。

有沒有辦法做到這一點?

我不想在try/catch中封裝GetConfigurationSettingValue(並且如果我輸入捕獲,則從web.config讀取),因爲它確實是一種難看的方式(並且大多數情況下它不具有性能效率!)。

謝謝!

回答

3

1.7 Azure SDK更新。 已引入CloudConfigurationManager類。允許單個GetSetting調用首先查看您的cscfg,然後如果找不到密鑰則回退到web.config。

http://msdn.microsoft.com/en-us/LIBRARY/jj157248

前1.7 SDK 簡單的答案是否定的。 (我知道的)

更有趣的話題是將配置視爲依賴。我發現將配置設置視爲依賴關係是有益的,這樣可以隨時間改變後臺實現。該實現可能是一個假冒測試或更復雜的事情,如從.config/ .cscfg切換到多租戶解決方案的數據庫實施。

鑑於此配置包裝,您可以將TryGetSetting作爲內部方法編寫,無論您的配置選項的來源是什麼。將此功能添加到RoleEnvironment成員後,您只需更改該內部實現。

+0

感謝您的回答和觀點。 – JYL 2011-05-16 15:27:09

相關問題