Где ConfigurationManager ConnectionStrings получает свое значение?
-
04-07-2019 - |
Вопрос
В моем приложении ASP.NET у меня есть файл web.config. В файле web.config у меня есть строка подключения ...
<connectionStrings>
<add name="HRDb" connectionString="xxxxx" providerName="System.Data.SqlClient" />
</connectionStrings>
Тем не менее, когда я получаю это значение с помощью ConfigurationManager.ConnectionStringsp["HRDb"]
, я получаю мою старую строку подключения, а не новую.
Где еще (кроме web.config) ConfigurationManager
считывает значения строки подключения?
Я запускаю приложение из VS.NET (не развернуто в IIS).
Решение
Я понял, что происходит не так.
Итак, чтобы ответить на мой собственный вопрос ... ConfigurationManager читает только из web.config.
Моя проблема заключалась в том, что проект был настроен на использование веб-сервера IIS при запуске проекта вместо использования сервера разработки Visual Studio. Так что на самом деле я запускал старую версию своего приложения. Глупо.
Другие советы
Также возможно, хотя и маловероятно, что у вас есть строка подключения, определенная в " parent " web.config в папке над вашей текущей папкой или даже в machine.config.
Попробуйте добавить элемент <clear />
перед элементом <add>
.
Где хранилось «старое» значение? Это в другом конфигурационном файле? Диспетчер конфигурации должен извлекать только файлы конфигурации, но для приложения может быть несколько файлов. Является ли часть процесса сборки копированием старого файла?
У меня была похожая проблема, решение которой состояло в том, что я держал неправильный файл web.config, который был сгенерирован Visual Studio при добавлении файла или около того.