应用设置与应用设置。应用设置过时了? [复制]

Posted

技术标签:

【中文标题】应用设置与应用设置。应用设置过时了? [复制]【英文标题】:appSettings vs applicationSettings. appSettings outdated? [duplicate] 【发布时间】:2011-01-21 23:52:42 【问题描述】:

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

应用设置: 在 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 没有用处。我在这里错过了什么吗?哪个是历史上较旧的?

【问题讨论】:

【参考方案1】:

这已在此处讨论过:Pros and cons of appSettings vs applicationSettings (.NET app.config)。

至于您的问题:较旧的是&lt;appSettings>,大约在2.0之前,&lt;applicationSettings>在2.0中可用。

优势?当我编辑一个值或在服务器上添加一个值时,最好的工具是记事本&lt;applicationSettings> 非常冗长,有时我只想要一个字符串 .也许是一个愚蠢的例子,但是当我调整层之间的配置设置以正确获得自动部署设置时,它的简单性非常有用。

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

可能是唯一能指出使用或不使用 applicationSettings 的一些重要区别和原因的答案。【参考方案3】:

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

【讨论】:

感谢您提供此信息!我阅读了互联网以找到这个答案。 感谢您的回答。我想知道为什么我无法使用 ASP.NET MVC 在视图中访问存储在 ApplicationSettings 中的内容。 似乎库 dll 可以访问主配置文件中的旧式键值应用程序设置,但不能访问较新的强类型应用程序设置。如果您想将所有配置参数(对于应用程序及其库)保持强类型并在一个地方,您必须通过属性或构造函数传递库的需求。如果你有一个静态库类,例如一个发送电子邮件并具有许多配置参数的设备,使用旧的 appSettings 块更容易传递它们。恕我直言...【参考方案4】:

我想补充一点,IIS 8.0 GUI(以及以前的版本)不能编辑 &lt;applicationSettings&gt; 部分(它是不可见的,即看起来好像没有参数可以配置)而 &lt;appSettings&gt; 可以用 IIS 编辑8.0.

如果 VS2012/IIS 8.0 一直使用相同的 GUI 配置系统就好了,但产品在这方面似乎并不同步。一种或另一种方式,您可能必须使用记事本编辑应用程序设置。

连接字符串确实出现在两个 GUI 中,但如果在 IIS 中使用 &lt;applicationSettings&gt;,它们包括完整路径 (Namespace.Properties.Settings.ConnectionStringName)。

【讨论】:

以上是关于应用设置与应用设置。应用设置过时了? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在端口模式下设置应用程序? [复制]

QT4:如何重启应用程序?重新设置? [复制]

无法将我自己的 SMS 应用程序设置为默认值。任何建议如何解决它? [复制]

如何设置应用路径?

如何在实时数据库中将用户 ID 设置为与身份验证中的用户 ID 相同? [复制]

ini 基本的Nginx网关/应用程序设置。不要在没有理解内容的情况下简单地复制粘贴。