Как вы итерацию с помощью пользовательских ключей в web.config?

голоса
3

можно ли создать свои собственные ключи в файле web.config ASP.NET и перебирать их с C #? Как вы оба (где я положил ключ? Какой формат?)? У меня есть приложение для интранета, которая делает некоторые вещи, основанные на IP-адрес клиента. Вместо жесткого кодирования тех, в файле отделенного кода, я думал, что я бы поставил их в web.config и итерацию через это. Таким образом, я мог бы добавить или удалить из моего файла конфигурации без перекомпиляции всех.

Мой ключ будет иметь имя, IP-адрес, и, возможно, другую информацию.

Спасибо.

Задан 25/11/2008 в 15:49
источник пользователем
На других языках...                            


3 ответов

голоса
10

Я думаю, что это должен сделать это для вас ...

Это в вашем web.config ...

<configSections>
    <section name="DataBaseKeys" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</configSections>
<DataBaseKeys>
    <!--Connection Strings for databases (or IP Addresses or whatever)-->
    <add key="dbCon1" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>
    <add key="dbCon2" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>
    <add key="dbCon3" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>
    <add key="dbCon4" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>
    <add key="dbCon5" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>  
</DataBaseKeys>

Это ваш код ...

using System.Configuration;

using System.Collections.Specialized;

protected void Page_Load(object sender, EventArgs e)
{
    LoadDdls();
}

private void LoadDdls()
{
    NameValueCollection nvcDbKeys = GetDbKeys();

    //Loop through the collection       
    for (int i = 0; i < nvcDbKeys.Count; i++)
    {
        // "Keys" is the "key" - Get(int) is the "value"
        this.DropDownList1.Items.Add(new ListItem(nvcDbKeys.Keys[i], nvcDbKeys.Get(i)));
    }
}

private NameValueCollection GetDbKeys()
{
    //Declare a name value collection to store Database Key List from web.config
    NameValueCollection nvcDatabaseKeyList;
    nvcDatabaseKeyList = (NameValueCollection) ConfigurationManager.GetSection("DataBaseKeys");

    return nvcDatabaseKeyList;
}
Ответил 26/03/2010 в 15:55
источник пользователем

голоса
2

Быстрый и грязный раствор : Добавьте ключи к AppSettings с индексом как постфикс, то есть. «key1», «key2» и т.д., и петли , пока вы не получите ключ , который не существует. Или добавьте разделители списка к одному ключу, то есть. "значение1; значение2; value3; ..".

Лучшее решение : создать свой собственный обработчик раздела, то вы можете добавить свои данные в своем собственном пути в отдельном разделе web.config. Вам нужно определить участок и sectiongroup в верхней части web.config, со ссылкой на класс секции обработчика.

<configuration>
   <configSections>
      <sectionGroup name="MySectionGroup">
          <section name="MySection" type="[type and full assembly name]"/>

   ...
   <MySectionGroup>
      <MySection>
         [some xml]

Далее создадим класс раздел обработчика, он должен реализовать интерфейс IConfigurationSectionHandler , который определяет Создать метод. Создание принимает sectionNode в качестве параметра, который является XML - узел можно разобрать в любом случае вы хотите. Ответный объект должен содержать данные , которые вы уже разобраны. Чтобы загрузить обработчик раздела, написать:

MySectionDataObject myData = ConfigurationManager.GetSection( "MySectionGroup/Section" ) as MySectionDataObject
Ответил 25/11/2008 в 16:07
источник пользователем

голоса
2

Вы можете создать раздел Пользовательские настройки . Это позволяет поставить УММ, пользовательские конфигурации в файле web.config, и доступ к нему в какой бы путь вы посчитаете нужным.

Ответил 25/11/2008 в 16:03
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more