2010-06-17 223 views
3

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

谢谢

-Oleg

回答

0

我也不太清楚,你想做的事。如果你只是想从一个不同的位置加载一个配置文件,你可以做到以下几点:

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> 

如果这没有帮助,你可以进一步澄清你的问题。

+0

为了澄清,我不想编辑Web.Config,因为提供者配置可以由管理员用户在网站上编辑。如果我将提供程序配置存储在Web.config中,那么当有人编辑提供程序配置时,该站点将重新进行重新设置。 我想我可以使用你的... configSource =“configFile.config”...解决方案。我假设编辑configFile.config时,该站点不会重新启动。 感谢您关注此事。 – OlegR 2010-07-02 17:36:26

+0

即正确,编辑单独的文件不会导致Web应用程序重新启动。 – Bronumski 2010-07-03 13:20:32

相关问题