appSettings vs applicationSettings。 appSettings已过时?

时间:2010-02-28 11:30:19

标签: c# asp.net properties appsettings web-deployment-project

我对在web.config中保存设置的两种方法有一些疑问。

的AppSettings : 查看web.config

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

代码隐藏中的用法

ConfigurationManager.AppSettings["key1"];

ApplicationSettings / Properties (使用项目中的'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的类型不是强类型,而appSettings就是这样。

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

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

4 个答案:

答案 0 :(得分:22)

此前已经讨论过:Pros and cons of appSettings vs applicationSettings (.NET app.config)

至于你的问题:较旧的问题是<appSettings&gt;,它在2.0之前,<applicationSettings&gt;在2.0中可用。

优势?当我正在编辑某个值,或在最佳工具为notepad <applicationSettings&gt;的服务器上添加值时是非常详细,有时我只想要一个字符串。也许是一个愚蠢的例子,但是当我调整层之间的配置设置以正确地进行自动部署设置时,它非常有用,它很简单。

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

这样做的另一个好处就是我可以Config.LDAPServer或者每个不同的区域配置一个配置,比如Security.ConfigThemes.Config(猜猜在这里!),你可以得到一个非常有用的/明确命名方案作为附带利益。

答案 1 :(得分:21)

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

答案 2 :(得分:6)

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

答案 3 :(得分:3)

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

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

连接字符串确实出现在两个GUI中,但如果在IIS中使用<applicationSettings>,则它们包含完整路径(命名空间 .Properties.Settings。 ConnectionStringName )。< / p>