Как исправить “Свойство ConnectionString не было инициализировано”
-
06-07-2019 - |
Вопрос
Когда я запускаю свое приложение, я получаю: Свойство ConnectionString не было инициализировано.
Web.конфигурация:
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=localhost\sqlexpress;Initial Catalog=mydatabase;User Id=myuser;Password=mypassword;" />
</connectionStrings>
Стек , являющийся:
System.Data.SqlClient.SqlConnection.PermissionDemand() +4876643
System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection) +20
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
System.Data.SqlClient.SqlConnection.Open() +122
Я довольно новичок в .NET, и я не понимаю этого.Я нашел много ответов в Google, но ни один из них по-настоящему не устранил мою проблему.
Что это значит?Мой web.config плохой?Моя функция плохая?Моя конфигурация SQL работает неправильно (я использую sqlexpress)?
Моя главная проблема здесь заключается в том, что я не уверен, с чего начать это отлаживать...все, что угодно, помогло бы.
Редактировать:
Код сбоя:
MySQLHelper.ExecuteNonQuery(
ConfigurationManager.AppSettings["ConnectionString"],
CommandType.Text,
sqlQuery,
sqlParams);
SqlQuery - это запрос типа "выбрать * из таблицы".Параметры sqlParams здесь неуместны.
Другая проблема здесь заключается в том, что моя компания использует MySQLHelper, и у меня нет доступа к нему (есть только dll для вспомогательной библиотеки).Это прекрасно работало в других проектах, так что я на 99% уверен, что ошибка возникает не отсюда.
Я думаю, если нет способа отладить это, не видя кода, мне придется подождать, чтобы связаться с человеком, который создал этого помощника, чтобы получить код.
Решение
Ссылка на строку подключения должна выполняться как таковая:
MySQLHelper.ExecuteNonQuery(
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString,
CommandType.Text,
sqlQuery,
sqlParams);
ConfigurationManager.AppSettings["ConnectionString"]
было бы искать в AppSettings
для чего - то названного ConnectionString
, который он не смог бы найти.Вот почему в вашем сообщении об ошибке указано "ConnectionString" property has not been initialized
, потому что он ищет инициализированное свойство AppSettings
названный ConnectionString
.
ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString
указывает искать строку подключения с именем "MyDB".
Вот кто-то говорит об использовании строк подключения web.config
Другие советы
Вы получаете эту ошибку, когда источник данных пытается выполнить привязку к данным, но не может, поскольку он не может найти строку подключения.По моему опыту, обычно это происходит не из-за ошибки в web.config (хотя я не уверен в этом на 100%).
Если вы программно назначаете источник данных (например, SqlDataSource) или создаете запрос (т.е.используя комбинацию SqlConnection / SqlCommand), убедитесь, что вы присвоили ему ConnectionString .
SqlConnection myCon = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString;
Если вы подключаете элемент, связанный с базой данных, к источнику данных (т.е.GridView или ComboBox для SqlDataSource), убедитесь, что источник данных назначен одной из ваших строк подключения.
Опубликуйте свой код (для обеспечения безопасности элемента databound и web.config), и мы сможем взглянуть на него.
Редактировать: Я думаю, проблема в том, что вы пытаетесь получить строку подключения из области AppSettings, а программно это не то место, где она существует.Попробуйте заменить это на ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString
(если ConnectionString - это имя вашей строки подключения.)
Строка подключения является не в Настройки приложений.
То, что вы ищете, находится в:
System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]...
Используйте [] вместо (), как показано в примере ниже.
SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString);
DataTable data = new DataTable();
DataSet ds = new DataSet();
Просто в Коде за использованием Страницы:-
SqlConnection con = new SqlConnection("Data Source = DellPC; Initial Catalog = Account; user = sa; password = admin");
Это должно Сработать Просто Отлично