Различать ConnectionStrings в machine.config и web.config - PullRequest
2 голосов
/ 13 января 2011

Используя C #, есть ли способ различить ConnectionStrings в machine.config и web.config? Я хотел бы перебрать коллекцию в файле web.config, но не в файле machine.config.

ASP.NET 3.5, C #

Ответы [ 5 ]

2 голосов
/ 13 января 2011

Попробуйте приведенный ниже код или введите linq запрос, чтобы найти комплимент (различия) обоих конфигов.Следующее возвращает true, если строка соединения с индексом 0 поступает из конфигурации компьютера, где он также сравнивает строку соединения с индексом 0, в противном случае выдает false:

System.Configuration.ConfigurationManager.ConnectionStrings[0].Equals
(System.Configuration.ConfigurationManager.OpenMachineConfiguration()
.ConnectionStrings.ConnectionStrings[0])
1 голос
/ 13 января 2011

Из MSDN также посмотрите на пространство имен System.Web.Configuration.

Как: читать строки подключения из файла Web.config

System.Configuration.Configuration rootWebConfig =
            System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/MyWebSiteRoot");
        System.Configuration.ConnectionStringSettings connString;
        if (rootWebConfig.ConnectionStrings.ConnectionStrings.Count > 0)
        {
            connString =
                rootWebConfig.ConnectionStrings.ConnectionStrings["NorthwindConnectionString"];
            if (connString != null)
                Console.WriteLine("Northwind connection string = \"{0}\"",
                    connString.ConnectionString);
            else
                Console.WriteLine("No Northwind connection string");
        }
1 голос
/ 13 января 2011

вы пробовали

Configuration c = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/");
0 голосов
/ 21 февраля 2013

Для получения первой ConnectionString в localweb.config используйте его:

 var ms = System.Configuration.ConfigurationManager.OpenMachineConfiguration();
 if (ConfigurationManager.ConnectionStrings.Count > ms.ConnectionStrings.ConnectionStrings.Count)
            return ConfigurationManager.ConnectionStrings[ms.ConnectionStrings.ConnectionStrings.Count].ConnectionString;
0 голосов
/ 13 января 2011

Каждая конфигурация в Web.Config также может быть помещена в machine.config. Вы можете думать, что Machine.Config - это базовый класс, а Web.Config - это подкласс.

Таким образом, если вы переопределяете какие-либо параметры в Web.Config, вы в основном переопределяете параметры конфигурации компьютера (или просите приложение использовать параметры web.config)

Поэтому я думаю, что если вы пишете строку подключения в Web.Config, то из вашего приложения, когда вы просматриваете строки подключения

ConfigurationManager.ConnectionStrings

вы сможете получить доступ только к тем строкам подключения, которые вы написали в web.config.

Пожалуйста, попробуйте <clear/> в разделе строки подключения web.config. Поэтому я думаю, что это очистит строки подключения Machine.config.

...