ConfigurationManager продолжает получать строку подключения Machine.config

У меня есть сборка c #, которая использует app.config для хранения строки подключения к базе данных. При отладке приложения я заметил, что соединение с базой данных продолжало сбой, потому что ConfigurationManager продолжал возвращать строку соединения machine.config:

источник данных =. \ SQLEXPRESS; Комплексная безопасность; ....

я добавил<clear/> перед моей строкой соединения в app.config, и это устранило проблему на моем компьютере разработчика. Проблема вернулась, когда я развернул ее в производство. Может кто-нибудь сказать мне, как я могу остановить использование строки подключения machine.config?

SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings[0].ConnectionString);

<connectionStrings>
    <clear/>
    <add name="VersionConnectionString"
     connectionString=" Data Source=localhost;Initial Catalog=VersionInfo;User ID=user;Password=password"         
     providerName="System.Data.SqlClient" />
  </connectionStrings>

ОБНОВИТЬ

Следующее по-прежнему дает мне строку подключения machine.config ?!

 Configuration appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
                string dllConfigData =
                    appConfig.ConnectionStrings.ConnectionStrings[0].ConnectionString;
 Ivaylo Slavov22 окт. 2015 г., 10:33
Я знаю, что это старый пост, но все же мне любопытно, это настольное или консольное приложение? Видите ли раздел строки соединения с элементом clear в каталоге output (bin)?
 Sugafree16 апр. 2017 г., 23:38
У меня такая же проблема. У меня была правильная строка подключения в проекте «библиотека классов», которую я использовал, и оставил «web.config» пустым в проекте «Web». Как только я добавил то же самое в веб-проект, у меня все заработало. На всякий случай, если у вас есть несколько проектов в решении
 Amir25 апр. 2016 г., 12:05
У меня все еще есть проблема в моем приложении. Я добавил четкие или использованные ниже коды и скопировал конфигурационный файл в папку exe, но он по-прежнему выбирает данные по умолчанию. Я использую VS2015.

Ответы на вопрос(4)

вам также необходимо добавить их в app.config вашего exe, используя точно такое же имя для настройки. Затем вы можете изменить строку подключения в exe-файле .config, и DLL автоматически подберет ее при загрузке.

Вероятно, это единственный способ получить пользовательские строки подключения в файле app.config, если уровень персистентности БД реализован в отдельной DLL. Даже не спрашивайте меня, сколько времени мне понадобилось, чтобы исследовать и отлаживать это.

что это более старый вопрос, но у меня была такая же проблема сегодня. Проблема заключалась в том, чтоapp.config то, что я добавил в свой проект, не было скопировано в выходной каталог. Чтобы исправить это, щелкните правой кнопкой мыши наapp.config и выберитеProperties, Тогда поменяйBuild Action вContent, Надеюсь это поможет!

а не по INDEX - это гарантирует, что вы получите то, что просите.

Пытаться

SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["VersionConnectionString"].ConnectionString);
 roman m23 сент. 2010 г., 22:06
вы получаете строку подключения machine.config, когда получаете ее по имени?

та конфигурации:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

var myConnString = config.ConnectionStrings["VersionConnectionString"].ConnectionString;

Это полностью обходит файл конфигурации машины.

 Nick23 сент. 2010 г., 22:05
Это библиотека классов (.dll), выбрасывает OpenExeConfig и исключение. Хорошая идея, хотя.
 Matt Mitchell26 нояб. 2013 г., 05:20
Похоже, что это на самом деле не обходит конфигурацию машины
 Kiquenet28 сент. 2018 г., 10:00
Как получить ТОЛЬКО строки подключения из app.config / web.config, а не machine.config? В machine.config есть строка подключения, которая называется «LocalSqlServer»; поставщик по умолчанию (как и ожидалось) - «System.Data.SqlClient», а строка подключения -data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true",

Ваш ответ на вопрос