2010-02-28 85 views
50

我有兩個方法來保存web.config中的設置的一些問題。appSettings vs applicationSettings。 appSettings過時了嗎?

的AppSettings: 查找範圍的web.config在代碼隱藏

<appSettings> 
<add key="key1" value="value1"/> 
<add key="key2" value="value2"/> 
</appSettings> 

用法:

ConfigurationManager.AppSettings["key1"]; 

的applicationSettings /屬性(通過使用自動生成的該項目的「properties'標籤)
查找在web.config中的

<applicationSettings> 
    <Projectname.Properties.Settings> 
     <setting name="TestEnvironment" serializeAs="String"> 
      <value>True</value> 
     </setting> 
    </Projectname.Properties.Settings> 
</applicationSettings> 

使用代碼隱藏

Properties.Settings.Default.TestEnvironment 

那麼,什麼是這兩個存儲之間的區別在web.config中設置的可能性?
據我所見,appSettings的一個缺點是你自己修改了web.config,appSettings沒有強類型,就像applicationSettings一樣。

兩者都可以在Web部署項目中替換。

就我而言,無法用於appSettings。我在這裏錯過了什麼嗎?哪一個是歷史上看到的較舊的?

回答

22

這已經在此處討論過了:Pros and cons of appSettings vs applicationSettings (.NET app.config)

至於您的問題:較舊的是<appSettings>,它大約在2.0之前,​​>在2.0中可用。

優點?當我編輯的值,或增加服務器上的值,其中最好的工具是記事本​​>是非常冗長,有時我只想一個字符串。也許是一個愚蠢的例子,但是當我調整層之間的配置設置以正確地實現自動部署設置時,它非常有用,它很簡單。

我不得不同意其他討論中的marc_s,但是如果你正在做的事情非常複雜,那麼你可能已經接近了你應該有自己的配置部分的地步。由於您在啓動時反序列化爲您的配置類型,因此只會通過XML串行器直接進行檢查,這是唯一的區別。

這也有我的做Config.LDAPServer或可能有一個配置的不同區域各自一樣Security.ConfigThemes.Config(猜測這裏!)的好處,你可以得到一個真正有用的/明確的命名在那裏作爲一個附帶的好處方案。

6

我注意到的一件事是AppSettings值可以通過<%$ AppSettings: name %> aspx頁面中的內聯標籤引用,但似乎沒有通過內聯標籤訪問ApplicationSettings值的等效方法。

+3

感謝您的信息!我讀了互聯網找到這個答案。 – Germstorm

+0

感謝您的回答。我想知道爲什麼我無法訪問使用ASP.NET MVC的View中存儲在ApplicationSettings中的東西。 – user850010

+0

看來,庫dll文件可以訪問舊式鍵值的appSettings在主配置文件,但不是新的強類型的applicationSettings。如果你想保持你的所有配置參數(對於應用程序和它的庫)強類型並且在一個地方,你必須通過屬性或構造函數來傳遞庫的需求。如果你有一個靜態庫類,例如一個發送電子郵件並具有許多配置參數,使用舊的appSettings塊更容易傳遞它們。恕我直言... –

21

的applicationSettings被命名空間,以便兩個不同的組件可既具有用於「超時」沒有衝突的設置,並且由於缺省值是通過在代碼中的設置屬性的集合的applicationSettings是可選的。

+3

可能是唯一的答案,指出了一些重要的差異和使用或不使用applicationSettings的原因。 –

3

我想添加IIS 8.0 GUI(和以前的版本以及)不能編輯<applicationSettings>部分(它是不可見的,即,它看起來好像沒有參數可以被配置),而<appSettings>是可編輯與IIS 8.0。

如果VS2012/IIS 8.0一直使用相同的GUI配置系統,但這種產品似乎沒有在這方面同步,那本來就不錯。無論如何,您可能需要使用記事本編輯應用程序設置。

連接字符串會出現在兩個圖形用戶界面,但如果使用IIS <applicationSettings>它們包括完整路徑(命名空間 .Properties.Settings。的connectionStringName)。