31

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

Когда я запускаю свое приложение, я получаю: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%.

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

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

Jun 17, 2009, 3:36 PMот

добавил немного информации

Jun 17, 2009, 3:44 PMот

4ответа

3

Строка подключенияnot вAppSettings.

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

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

Используйте [] вместо (), как показано ниже.

SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["FADB_ConnectionString"].ConnectionString);
            DataTable data = new DataTable();
            DataSet ds = new DataSet();
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 - это имя вашей строки подключения.)

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

RelatedQuestions