[Tips][C#] 於不同層級(Layer)取得Web.config設定資料

於不同層級(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類別物件,注意一下類別名稱相同但命名空間不同喔。


希望此篇文章可以幫助到需要的人

若內容有誤或有其他建議請不吝留言給筆者喔 !