繁体   English   中英

Web.config appSettings:复数值

[英]Web.config appSettings: complex values

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

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

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

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

我在这里回答了类似的问题: 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>

自定义 class 进行设置:

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

    public int Port { get; set; }
}

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

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

因此,您只能将数据类型string作为 AppSettings keyvalue

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM