appSettings vs applicationSettings.appSettings已过时?

cit*_*nas 53 c# asp.net web-deployment-project properties appsettings

我有两个关于在web.config中保存设置的方法的问题.

Appsettings:查看web.config

<appSettings>
 <add key="key1" value="value1"/>
 <add key="key2" value="value2"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

代码隐藏中的用法:

ConfigurationManager.AppSettings["key1"];
Run Code Online (Sandbox Code Playgroud)

ApplicationSettings/Properties(使用项目中的'properties'选项卡自动生成)
查看web.config

<applicationSettings>
    <Projectname.Properties.Settings>
        <setting name="TestEnvironment" serializeAs="String">
            <value>True</value>
        </setting>
    </Projectname.Properties.Settings>
</applicationSettings>
Run Code Online (Sandbox Code Playgroud)

代码隐藏中的用法:

Properties.Settings.Default.TestEnvironment
Run Code Online (Sandbox Code Playgroud)

那么,web.config中设置的这两种存储可能性有什么区别?
据我所知,appSettings的一个缺点是你自己修改了web.config并且appSettings不是强类型的,就像applicationSettings一样.

两者都可以在Web部署项目中替换.

就我而言,appSettings没有用处.我在这里错过了什么吗?哪个是历史悠久的旧版?

Nic*_*ver 22

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

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

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

我不得不同意其他讨论中的marc_s,如果你正在做任何非常复杂的事情,那么你可能已经接近了你应该拥有自己的配置部分.由于您在启动时反序列化为您的配置类型...您可以通过这种方式检查相同的类型,只需通过XML Serializer直接进行,这是唯一的区别.

这也有我做的优点,Config.LDAPServer或者可能是每个不同区域的一个配置,比如Security.ConfigThemes.Config(在这里猜测!),你可以在那里得到一个非常有用/清晰的命名方案作为附带好处.


Ber*_*ann 22

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

  • 可能是指出使用或不使用applicationSettings的一些重要差异和原因的唯一答案. (4认同)

Loo*_*ole 6

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

  • 多谢告诉我这个消息!我在网上看到了这个答案. (3认同)