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.Config
和Themes.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)。