Web.config appSettings:复杂的值

时间:2011-06-09 06:33:59

标签: c# .net asp.net configuration asp.net-4.0

Web.config的appSettings部分是否只能存储这样的简单字符串?

   <appSettings>
     <add key="OKPage" value="http://mysite.com/okpage.html" />
   </appSettings>

或者我可以有更复杂的值,如CDATA或嵌套值?如果没有,这是否是Web.config中存储自定义设置的唯一位置?感谢

3 个答案:

答案 0 :(得分:5)

您可以将任何XmlSerializable类作为设置。

我在这里回答了类似的问题:Custom type application settings in ASP.NET
还附上了一个示例项目。

以下是我的配置文件中的设置示例:

<setting name="MyEndPoints"
          serializeAs="Xml">
  <value>
    <ArrayOfEndPoint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <EndPoint>
        <HostName>10.40.10.9</HostName>
        <Port>22634</Port>
      </EndPoint>
      <EndPoint>
        <HostName>10.40.10.9</HostName>
        <Port>22635</Port>
      </EndPoint>
    </ArrayOfEndPoint>
  </value>
</setting>

设置的自定义类:

public class EndPoint
{
    public string HostName { get; set; }

    public int Port { get; set; }
}

答案 1 :(得分:5)

appSettings中的键被检索为NameValueCollection,根据定义

  

表示关联的集合   字符串键和字符串值可以   可以使用密钥或访问   与索引。

因此,对于AppSettings string

,您只能将数据类型value设置为key

是的,AppSettings是您存储设置的唯一地方 MSDN定义了这样的AppSettings。

  

包含自定义应用程序设置,   例如文件路径,XML Web服务   URL或任何信息   存储在.ini文件中   应用

答案 2 :(得分:0)

AppSettings部分是一个NameValueCollection,它包含字符串。 (NameValueCollection具有Add(字符串,字符串)方法。)如果在键/值内使用CDATA,则它将作为字符串输入到集合中。您必须自己解析它,例如XML。

AppSetttings部分作为设置的前置,已经编写了一个包装器,您可以从代码中访问密钥类型安全。另一方面,您的web.config只是XML,您可以在其中添加自己的类型。您需要编写一些代码来访问这些部分。