应用设置与应用设置。应用设置过时了? [复制]
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)。
至于您的问题:较旧的是<appSettings
>,大约在2.0之前,<applicationSettings
>在2.0中可用。
优势?当我编辑一个值或在服务器上添加一个值时,最好的工具是记事本<applicationSettings
> 非常冗长,有时我只想要一个字符串 .也许是一个愚蠢的例子,但是当我调整层之间的配置设置以正确获得自动部署设置时,它的简单性非常有用。
我必须同意其他讨论中的marc_s,但是,如果您正在做任何非常复杂的事情,那么您可能已经接近了应该拥有自己的配置部分的地步。由于您在启动时反序列化为您的配置类型......您可以通过这种方式进行相同的类型检查,直接通过 XML 序列化器是唯一的区别。
这也有我做Config.LDAPServer
或者每个不同区域的一个配置的优势,比如Security.Config
和Themes.Config
(在这里猜!),你可以在那里得到一个非常有用/清晰的命名方案附带好处。
【讨论】:
【参考方案2】:ApplicationSettings 是命名空间的,因此两个不同的程序集都可以有一个“超时”设置而不会发生冲突,而 ApplicationSettings 是可选的,因为默认值是通过代码中设置的属性设置的。
【讨论】:
可能是唯一能指出使用或不使用 applicationSettings 的一些重要区别和原因的答案。【参考方案3】:我注意到的一件事是 AppSettings 值可以通过 aspx 页面中的 <%$ AppSettings: name %>
内联标签引用,但似乎没有等效的方法可以通过内联标签访问 ApplicationSettings
值。
【讨论】:
感谢您提供此信息!我阅读了互联网以找到这个答案。 感谢您的回答。我想知道为什么我无法使用 ASP.NET MVC 在视图中访问存储在 ApplicationSettings 中的内容。 似乎库 dll 可以访问主配置文件中的旧式键值应用程序设置,但不能访问较新的强类型应用程序设置。如果您想将所有配置参数(对于应用程序及其库)保持强类型并在一个地方,您必须通过属性或构造函数传递库的需求。如果你有一个静态库类,例如一个发送电子邮件并具有许多配置参数的设备,使用旧的 appSettings 块更容易传递它们。恕我直言...【参考方案4】:我想补充一点,IIS 8.0 GUI(以及以前的版本)不能编辑 <applicationSettings>
部分(它是不可见的,即看起来好像没有参数可以配置)而 <appSettings>
可以用 IIS 编辑8.0.
如果 VS2012/IIS 8.0 一直使用相同的 GUI 配置系统就好了,但产品在这方面似乎并不同步。一种或另一种方式,您可能必须使用记事本编辑应用程序设置。
连接字符串确实出现在两个 GUI 中,但如果在 IIS 中使用 <applicationSettings>
,它们包括完整路径 (Namespace.Properties.Settings.ConnectionStringName)。
【讨论】:
以上是关于应用设置与应用设置。应用设置过时了? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
无法将我自己的 SMS 应用程序设置为默认值。任何建议如何解决它? [复制]