Asp.net 如何在其他配置元素中引用配置元素值?

Asp.net 如何在其他配置元素中引用配置元素值?,asp.net,xml,configuration,Asp.net,Xml,Configuration,例如,我创建了一个使用数据库的提供者服务。在web.config中,如何将提供程序的连接字符串设置为在中定义的主应用程序连接字符串?您可以创建一个自定义配置元素,用于读取主应用程序配置的配置 不要把这句台词当作台词,而是像 public class ProviderConfiguration : ConfigurationSection { #region Constructors public ProviderConfiguration () { } #endregio

例如,我创建了一个使用数据库的提供者服务。在web.config中,如何将提供程序的连接字符串设置为在中定义的主应用程序连接字符串?

您可以创建一个自定义配置元素,用于读取主应用程序配置的配置

不要把这句台词当作台词,而是像

public class ProviderConfiguration : ConfigurationSection
{
    #region Constructors
    public ProviderConfiguration () { }
    #endregion

    #region Public Properties
    [ConfigurationProperty("ProviderConnection")]
    public ProvderSettingsConfigElement ProvderConnection
    {
        get { return (ProvderSettingsConfigElement)this["ProviderConnection"]; }
    }

    #endregion
}

public class ProvderSettingsConfigElement : ConfigurationElement
{
    #region Constructors
    public ProvderSettingsConfigElement () { }

    public WebSecuritySettingsDataProviderElement(string name, string type)
    {
        ConnectionString = ConfigurationManager.Get("mainAppConnString");
    }

    #region Public Properties
    [ConfigurationProperty("connectionString")]
    public string ConnectionString{get; set;}

}
这个问题的答案基本上是这样的,只是做了一些调整

如果您愿意将其置于配置代码之外,那么一旦选择了提供程序配置,就可以直接从提供程序类与main connection strings部分对话:

var provider = ConfigurationManager.GetSection("ProviderConfiguration")
                as ProdviderSettingsSection;

ConnectionString connStr = 
    WebConfigurationManager.ConnectionStrings[provider.ConnectionString];
如果要将所有内容包装到提供程序中,则需要为属性提供一个备份字段:

public class ProvderSettingsConfigElement : ConfigurationElement {
  private m_ConnectionString;

  [ConfigurationProperty("connectionString")]
  public string ConnectionString{
    // Probably want to check m_ConnectionString for IsNullOrEmpty
    get{ return WebConfigurationManager.ConnectionStrings[m_ConnectionString]; } 
    set{ m_ConnectionString = value;}
  }
}