例如,我创建了一个使用数据库的提供者服务。在web.config中,如何将提供者的连接字符串设置为主应用程序连接字符串,在< ConnectionStrings>中定义?
答案 0 :(得分: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;}
}
答案 1 :(得分:1)
Matt的答案非常多,有几个调整。
如果您很高兴将其置于配置代码本身之外,那么一旦您选择了提供程序配置,您就可以直接从提供程序类与主连接字符串部分进行通信:
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;}
}
}