Web.config appSettings:复杂的值

pis*_*hio 5 .net c# asp.net configuration asp.net-4.0

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

   <appSettings>
     <add key="OKPage" value="http://mysite.com/okpage.html" />
   </appSettings>
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*Aza 5

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

我在这里回答了类似的问题: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>
Run Code Online (Sandbox Code Playgroud)

设置的自定义类:

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

    public int Port { get; set; }
}
Run Code Online (Sandbox Code Playgroud)


nav*_*een 5

根据定义appSettings检索内部的密钥NameValueCollection

表示可以使用键或索引访问的关联String键和String值的集合.

所以,你只能有数据类型string作为value一个的AppSettingskey

是的,AppSettings是唯一可以存储设置的地方.
MSDN定义了这样的AppSettings.

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