appSettings vs applicationSettings。 appSettings过时了吗?

我有两个方法来保存web.config中的设置的一些问题。

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没有强types,就像applicationSettings一样。

两者在Web部署项目中都是可replace的。

就我而言, appSettings没有用处 。 我在这里错过了什么? 哪一个是历史上看到的较旧的?

这已经在这里讨论过了: appSettings vs applicationSettings(.NET app.config)的优点和缺点 。

至于你的问题:较旧的是<appSettings >,大约在2.0之前, <applicationSettings >在2.0中可用。

优点? 当我编辑一个值,或者在最好的工具是记事本<applicationSettings >的服务器上添加一个值是非常详细的,有时我只是想要一个string 。 也许是一个愚蠢的例子,但是当我调整层之间的configuration设置以正确地进行自动部署设置时,它非常有用,它很简单。

我必须同意其他讨论中的marc_s ,但如果你正在做任何非常复杂的事情,那么你可能已经接近了你应该有自己的configuration部分的地步。 由于您在启动时将您的configurationtypes反序列化,因此您只能通过XML序列化程序直接进行相同types的检查,这是唯一的区别。

这也有我做Config.LDAPServer的好处,也可能是每个不同区域的一个configuration,比如Security.ConfigThemes.Config (在这里Themes.Config ),你可以得到一个非常有用/清晰的命名scheme,作为一个副作用。

ApplicationSettings是命名空间,因此两个不同的程序集都可以设置为“超时”而不发生冲突,而ApplicationSettings是可选的,因为默认值是通过代码中设置的属性设置的。

我注意到的一件事是AppSettings值可以通过aspx页面中的<%$ AppSettings: name %>内联标签引用,但似乎没有通过内联标签访问ApplicationSettings值的等效方法。

我想补充一点,IIS 8.0 GUI(以及以前的版本)不能编辑<applicationSettings>部分(它是不可见的,即看起来好像没有参数可configuration),而<appSettings>可以用IIS 8.0编辑。

如果VS2012 / IIS 8.0一直使用相同的GUIconfiguration系统,那将会很不错,但是产品在这方面似乎没有同步。 无论如何,您可能需要使用记事本编辑应用程序设置。

连接string确实出现在两个GUI中,但是如果在IIS中使用<applicationSettings> ,它们将包含完整path( 名称空间 .Properties.Settings。ConnectionStringName)。