代码之家  ›  专栏  ›  技术社区  ›  citronas

应用程序设置与应用程序设置。应用设置过期?[复制品]

  •  52
  • citronas  · 技术社区  · 14 年前

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

    应用程序设置 : 在web.config中查找

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

    代码隐藏中的用法 :

    ConfigurationManager.AppSettings["key1"];
    

    应用程序设置/属性 (使用项目中的“属性”选项卡自动生成)
    在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 . 我是不是丢了什么东西?哪个是历史上见过的老的?

    4 回复  |  直到 11 年前
        1
  •  22
  •   Community Fabien Hure    7 年前

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

    至于你的问题:老的是 <appSettings >,大约在2.0之前, <applicationSettings >在2.0中可用。

    优势?当我编辑一个值,或者在一个最好的工具是记事本的服务器上添加一个值时 <应用程序设置 非常 冗长,有时我 只要一根绳子 . 也许是一个愚蠢的例子,但是当我调整层之间的配置设置以正确地获得自动部署设置时,它非常有用,因为它非常简单。

    我必须同意 marc_s 不过,从另一个讨论中可以看出,如果您正在做一些非常复杂的事情,那么您可能已经接近了应该有自己的配置部分的地步。因为您在启动时反序列化到配置类型中…这样就可以得到相同的类型检查,所以直接通过XML序列化器是唯一的区别。

    这也是我的优势 Config.LDAPServer 或者为不同的区域分别设置一个配置,比如 Security.Config Themes.Config (猜猜看!),您可以在其中获得一个非常有用/清晰的命名方案作为一个附带好处。

        2
  •  21
  •   Bernhard Hofmann    13 年前

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

        3
  •  6
  •   sra Jon    13 年前

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

        4
  •  3
  •   galmok    11 年前

    我想补充的是,iis 8.0gui(以及以前的版本)不能编辑 <applicationSettings> 节(它是不可见的,即看起来好像没有参数可以配置)而 <appSettings> 可使用IIS 8.0进行编辑。

    如果vs2012/iis 8.0一直使用相同的gui配置系统,那就太好了,但产品似乎在这方面没有同步。不管怎样,您可能必须使用记事本编辑应用程序设置。

    连接字符串确实出现在两个gui中,但是如果使用 <应用程序设置> 在iis中,它们包括完整路径( 命名空间 。属性。设置。 连接字符串名称 )