Пользовательский файл конфигурации для конфигурации провайдера

Я создаю собственный провайдер и хотел бы знать, как указать другой файл конфигурации (например, MyProvider.Config), чтобы мой провайдер мог выбрать конфигурацию. По умолчанию используется Web.Config.

Могу ли я указать путь к пользовательскому файлу конфигурации в классе MyProviderConfiguration?

Пример:

internal class MyProviderConfiguration : ConfigurationSection
{
    [ConfigurationProperty("providers")]        
    public ProviderSettingsCollection Providers
    {
        get
        {
            return (ProviderSettingsCollection)base["providers"];
        }
    }

    [ConfigurationProperty("default", DefaultValue = "TestProvider")]
    public string Default
    {
        get
        {
            return (string)base["default"];
        }
        set
        {
            base["default"] = value;
        }
    }
}

person OlegR    schedule 17.06.2010    source источник


Ответы (1)


Я не слишком уверен, что вы хотите сделать. Если вы просто хотите загрузить файл конфигурации из другого места, вы можете сделать следующее:

ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();
configFileMap.ExeConfigFilename = "<config file path>";

Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);

MyProviderConfiguration customConfig = (MyProviderConfiguration)config.GetSection("

имяразделаконфигурации");

Если вы просто хотите поместить свою пользовательскую конфигурацию в отдельный файл, вы можете сделать это:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="myProviderConfiguration" type="Namespace.MyProviderConfiguration, AssemblyName" />
    </configSections>
    <myProviderConfiguration configSource="configFile.config" />
</configuration>

И тогда ваш файл configFile.config будет содержать:

<?xml version="1.0" encoding="utf-8"?>
<myProviderConfiguration Default="value">
    <Providers>
        <Provider />
    </Providers>
</myProviderConfiguration>

Если это не поможет, вы можете уточнить свой вопрос подробнее.

person Bronumski    schedule 29.06.2010
comment
Чтобы уточнить, я не хочу редактировать Web.Config, потому что конфигурация провайдера может быть изменена на сайте пользователями-администраторами. Если я сохраню конфигурацию провайдера в Web.config, сайт будет переопределен, когда кто-то редактирует конфигурацию провайдера. Я думаю, что могу использовать ваше решение ...configSource=configFile.config.... Я предполагаю, что сайт не будет перезапущен, когда я редактирую configFile.config. Спасибо, что изучили это. - person OlegR; 02.07.2010
comment
Правильно, редактирование отдельного файла не приведет к перезапуску веб-приложения. - person Bronumski; 03.07.2010