【问题标题】:Custom config file for provider configuration提供者配置的自定义配置文件
【发布时间】:2011-03-05 00:23:31
【问题描述】:

我正在构建一个自定义提供程序,并且想知道如何为我的提供程序指定不同的配置文件(例如: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;
        }
    }
}

【问题讨论】:

    标签: c# asp.net provider


    【解决方案1】:

    我不太确定你想做什么。如果您只想从其他位置加载配置文件,您可以执行以下操作:

    ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();
    configFileMap.ExeConfigFilename = "<config file path>";
    
    Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
    
    MyProviderConfiguration customConfig = (MyProviderConfiguration)config.GetSection("
    

    configSectionName");

    如果您只想将自定义配置放在单独的文件中,您可以这样做:

    <?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>
    

    如果这没有帮助,您能否进一步澄清您的问题。

    【讨论】:

    • 澄清一下,我不想编辑 Web.Config 因为管理员用户可以在站点上编辑提供程序配置。如果我将提供程序配置存储在 Web.config 中,则当有人编辑提供程序配置时,该站点将被重述。我想我可以使用您的 ...configSource="configFile.config"... 解决方案。我假设当我编辑 configFile.config 时该站点不会重新启动。感谢您对此进行调查。
    • 没错,编辑单独的文件不会导致网络应用重启。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多