Web.config appSettings: сложные значения - PullRequest
5 голосов
/ 09 июня 2011

Может ли раздел appSettings Web.config хранить только такие простые строки?

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

или у меня могут быть более сложные значения, такие как CDATA или вложенные значения?Если нет, то это единственное место в Web.config, где хранить пользовательские настройки?Спасибо

Ответы [ 3 ]

5 голосов
/ 09 июня 2011

Ключи внутри appSettings извлекаются как NameValueCollection, которые по определению

Представляет коллекцию связанных Строковые ключи и строковые значения, которые могут быть доступным либо с помощью ключа или с указателем.

Таким образом, вы можете иметь только тип данных string как value для AppSettings key

И да, AppSettings - единственное место, где вы можете сохранить свои настройки.
MSDN определяет AppSettings следующим образом.

Содержит пользовательские настройки приложения, такие как пути к файлам, веб-служба XML URL-адреса или любая информация, которая хранится в файле .ini для применение.

5 голосов
/ 09 июня 2011

Вы можете сделать любой класс 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>

Пользовательский класс для настроек:

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

    public int Port { get; set; }
}
0 голосов
/ 09 июня 2011

Раздел AppSettings представляет собой коллекцию NameValueCollection, которая содержит строки. (NameValueCollection имеет метод Add (string, string).) Если вы используете CDATA внутри ключа / значения, он будет просто введен в коллекцию в виде строки. Вам придется проанализировать его самостоятельно, например, в XML.

В разделе AppSetttings в качестве предустановки для настроек уже написана оболочка, в которой вы можете получить доступ к типам ключей, безопасным из вашего кода. С другой стороны, ваш web.config - это просто XML, куда вы можете добавлять свои собственные типы. Вам нужно будет написать код для доступа к этим разделам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...