2011-07-18 26 views
1

我试图弄清楚如何从具有某个提供者但被卡住的web.config中获取所有connectionStrings。从web.config抓取基于提供者名称的连接字符串

我的方法的基础是这样的

var webConfig = new ExeConfigurationFileMap { ExeConfigFilename = GlobalSettings.FullpathToRoot + "web.config" }; 
var config = ConfigurationManager.OpenMappedExeConfiguration(webConfig, ConfigurationUserLevel.None); 
var section = (ConnectionStringsSection)config.GetSection("connectionStrings"); 

// some code like 
foreach(var item in section.providerName.equals("sql.provider")) 
... 

任何意见高度赞赏!

+0

你在哪里卡住的问题

public static Dictionary<string,string> ExistingConnections() { var connections = new Dictionary<string, string>(); foreach (ConnectionStringSettings connection in ConfigurationManager.ConnectionStrings) { if(connection.ProviderName == "sql.providername") connections.Add(connection.ProviderName, connection.ConnectionString); } return connections.Count > 0 ? connections : null; } 

或?究竟是什么问题? – Oded

+0

问题是我无法对providerName属性进行选择。 –

回答

1

解决使用LINQ

public static Dictionary<string,string> ExistingConnections() 
{ 
    var connections = ConfigurationManager.ConnectionStrings.Cast<ConnectionStringSettings>().Where(connection => connection.ProviderName == "Camelot.SharePointProvider").ToDictionary(connection => connection.ProviderName, connection => connection.ConnectionString); 
    return connections.Count > 0 ? connections : null; 
} 
相关问题