於不同層級(Layer)取得Web.config設定資料
需求設定
在開發專案往往會將專案劃分為好幾個層級(例如服務層、邏輯層),筆者最近有個需求是要在服務層中包裹一個呼叫外部Web Api取得資料的方法,為了避免Web Api提供者異動Uri造成系統需重新編譯,所以須將URI紀錄於Config中以便依現況調整;由於此專案是Web網站所以二話不說馬上把值寫入Web.config中,如下。
<appSettings>
<!--定義 Web Api 位置如下-->
<add key="WebApiUri_GetUserDataFromDb" value="http://localhost:51564/api/user/FetchAllUser" />
</appSettings>
</configuration>
取得設定檔資訊
至於要如何在服務層(Service Layer)中取得Web專案中的Web.config資料呢? 其實也沒什麼特別的,只要使用System.Web.Configuration命名空間提供之WebConfigurationManager類別物件即可取得所需資訊。
{
// 取得Web.config中定義的URI位置
string uri = WebConfigurationManager.AppSettings["WebApiUri_GetUserDataFromDb"];
using (WebClient webClient = new WebClient())
{
return JsonConvert.DeserializeObject<List<User>>(
webClient.DownloadString(uri)
);
}
}
最後提醒一下,若是開發WinForm等應用程式時,要取得設定檔(App.config)則需使用System.Configuration命名空間下的ConfigurationManager類別物件,注意一下類別名稱相同但命名空間不同喔。
希望此篇文章可以幫助到需要的人
若內容有誤或有其他建議請不吝留言給筆者喔 !