2009-03-27 3 views
2

Например, я создал службу поставщика, которая использует базу данных. В web.config как установить строку подключения поставщика к основной строке подключения приложения, определенной в < ConnectionStrings>?Как ссылаться на значения элементов конфигурации в других элементах конфигурации?

ответ

1

Matt «s ответ довольно много там, с парой ухищрений.

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

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;} 
    } 
} 
1

Вы можете создать настраиваемый элемент конфигурации, который читает конфигурацию для основной конфигурации приложения.

Не берите эту линию для линии, но что-то вроде ...

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;} 

} 
Смежные вопросы