Странно «Свойство ConnectionString не было инициализировано». Ошибка

1

Так что просто загрузили исходный код для нового проекта, который строит и работает отлично на пару других ящиков разработчика. Я получаю сообщение об ошибке:

Свойство ConnectionString не было инициализировано.

Я могу подключиться к базе данных через SQL Server Management Studio, используя строку подключения в моем Web.config без проблем.

Исходный код библиотеки, которая выбрасывает эту ошибку, недоступен.

Проект представляет собой проект ASP.NET MVC со следующими значениями в Web.config

<connectionStrings>
    <add name="DbConnection" connectionString="Data Source=la-foo-server\development,1444;database=mydb;user id=myId;password=myPassword;" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
    <add key="ConnectionStringName" value="DbConnection" />
</appSettings>

Я попытался добавить App.Config в корзину и корень моего сайта ASP.NET на всякий случай, по какой-то причине lib с исходным кодом пытается прочитать App.Config и игнорирует Web.config.

Решения StackOverflow, которые не помогли:

У разработчика была такая же ситуация в среде Windows 8.1 на днях, он перешел в среду Windows 7, и ошибка была исправлена. Я использую Windows 7 pro, поэтому я задаюсь вопросом, является ли это проблемой при установке.NET Framework.

Веб-сайт ASP.NET MVC предназначен для версии 4.0. Большинство других моих проектов, которые работают без проблем, нацелены на.NET 4.5

  • 0
    Можете ли вы подключить базу данных, используя эту информацию строки подключения через драйвер ODBC.
  • 0
    Я могу подключиться к базе данных через Sql Management Studio, приложение просто не находит строку подключения в файле конфигурации, как я думаю, ошибка.
Показать ещё 5 комментариев
Теги:
sql-server
asp.net-mvc
connection-string

2 ответа

1
Лучший ответ

Таким образом, я смог получить исходный код для библиотеки классов, которая загружает строку подключения, и получается, что код загружает коллекцию таких строк:

   var collection = System.Web.Configuration.WebConfigurationManager.ConnectionStrings ?? System.Configuration.ConfigurationManager.ConnectionStrings;

        if (collection[1].Name == null)
            throw new Exception("Unable to detect connection string in app.config or web.config! Default connection string name is \'DbConnection.\'");

        db = new Database(collection[1].Name);

У моего machine.config была строка подключения в MySql, называемая LocalMySqlServer. Эта строка подключения, возможно, была добавлена установкой.NET MySql Connector, или, возможно, я сделал это изменение самостоятельно.

Таким образом, сборка connectionstring загружала соединение с моего machine.config, поэтому в элементе array collection[1] не было ожидаемой строки подключения. Это объясняет, почему некоторые разработчики не имели проблем на своих машинах, а у других разработчиков проблемы были на их машине.

  • 1
    Строки соединений должны быть восстановлены по имени, имя - это идентификатор строки соединения, а не ее позиция в файле конфигурации (которую, как вы обнаружили, вы не можете контролировать).
  • 0
    О, я знаю, я не писал код, это DLL, я должен использовать, хотя
0

Опция 1:

<connectionStrings>
    <add name="DbConnection" connectionString="Data Source=la-foo-server\development,1444;Initial Catalog=mydb;user id=myId;password=myPassword;" providerName="System.Data.SqlClient" />
  </connectionStrings>

Вариант 2:

  <connectionStrings>
    <add name="DbConnection" connectionString="Data Source=la-foo-server\development;Initial Catalog=mydb;user id=myId;password=myPassword;" providerName="System.Data.SqlClient" />
  </connectionStrings>
  • 0
    Это не помогло, хотя спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню