2014-06-08 34 views
1

web.config中,爲什麼我們不能有重複的連接字符串和處理程序,但另一方面,我們可以在相同級別或沿着繼承層次結構具有相同鍵名的子元素的副本<appSettings>重複配置鍵

回答

1

我不會完成對你的問題的回答,但我有一些我想分享的信息。

如果你看看

ConfigurationManager.AppSettings 

那麼它的NameValueCollection,如果你給兩個關鍵的具有相同名稱的默認實現將返回最新值(上次值,以便該鍵),但如果你想支持多鍵支持,並且您希望它返回該鍵的所有值,而不是使用自定義實現替換appSettings的默認行爲。

http://www.codeproject.com/Articles/4302/How-to-make-AppSettings-work-with-multiple-values 

但是在連接字符串的情況下它是密封類ConnectionStringSettingsCollection。

它是一個實現,只支持一個同名的密鑰,並且在web.config級別,它允許名稱重複值,但是當你嘗試訪問它時會拋出錯誤。它在連接字符串的情況下也是有意義的,否則會讓人感到困惑。

根據我的觀點,它只是實施不同的方式來支持和減少混淆。

+0

@首先感謝您的寶貴意見: - 但我想知道爲什麼只在處理程序和連接字符串的情況下,它會拋出異常。 – usFarswan

+0

此外,在應用程序設置的情況下,它不會感到困惑,因爲它只是最後一個,那麼爲什麼它在連接字符串和其他的情況下變得困惑。我沒有得到該場景的實際情況。 – usFarswan

+0

如果您的項目或需求需要支持同一個鍵的多個值,但是對於連接字符串和處理程序,您可以在AppSetting上進行替換,但明顯依賴於該組件。假設連接字符串支持這種類型的重複,那麼連接工廠也會對這種情況感到困惑,因爲它依賴於這種情況。 Appsettings取決於特定的應用程序組件,所以它非常瞭解實現的變化(如果提供的話)。 – dotnetstep