Вопрос по asp.net, c# – Как исправить «Свойство ConnectionString не было инициализировано»

31

Когда я запускаю свое приложение, я получаю:The ConnectionString property has not been initialized.

Web.config:

<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%.

Я предполагаю, что если нет способа отладить его, не увидев код, мне придется подождать, чтобы связаться с человеком, который создал этот помощник, чтобы получить код.

добавил немного информации marcgg
Можете ли вы опубликовать строку подключения из webconfig и код ошибки, использующий ее? kscott

Ваш Ответ

4   ответа
3

not вAppSettings.

То, что вы ищете, находится в:

System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"]...
28

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

16

когда источник данных пытается привязаться к данным, но не может, потому что он не может найти строку подключения. По моему опыту, это обычно не из-за ошибки в web.config (хотя я не уверен в этом на 100%).

Если вы программно назначаете источник данных (такой как SqlDataSource) или создаете запрос (то есть, используя комбинацию SqlConnection / SqlCommand), убедитесь, что вы присвоили ему ConnectionString.

SqlConnection myCon = new SqlConnection(ConfigurationManager.ConnectionStrings[nameOfString].ConnectionString;

Если вы подключаете элемент привязки данных к источнику данных (то есть к GridView или ComboBox к SqlDataSource), убедитесь, что источник данных назначен одной из ваших строк подключения.

Опубликуйте свой код (для безопасности элемента данных и web.config), и мы сможем взглянуть на него.

EDIT:  Я думаю, проблема в том, что вы пытаетесь получить строку подключения из области AppSettings, а программно это не там, где она существует. Попробуйте заменить это наConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString (если ConnectionString - это имя вашей строки подключения.)

Нет, все хорошо. Просто измените код для MySQLHelper, чтобы получить строку подключения, как я сделал в моем редактировании.
Я добавил некоторый код, но не уверен, что он прояснит мою проблему. marcgg
его нет в AppSettings, кстати marcgg
меняется на ConfigurationManager.ConnectionStrings [& quot; ConnectionString & quot;]. ConnectionString не работает, но вы были близки. Решение Kscott работает, мне просто нужно использовать строку MyDB marcgg
Я не уверен, что получу его, нужно ли переместить расположение строки подключения в web.config? marcgg
0

SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString);
            DataTable data = new DataTable();
            DataSet ds = new DataSet();

Похожие вопросы