Подтвердить что ты не робот

SQL Azure + Получение ошибки "Уже открыт DataReader, связанный с этой командой..", даже после установки "MultipleActiveResultSets = True

Мы сталкиваемся с некоторыми проблемами с развернутой версией нашего приложения в облаке.

Наше приложение представляет собой проект ASP.NET MVC 3 с платформой ADO.NET Entity Framework.

В соответствии с блоками msdn нам нужно добавить параметр "MultipleActiveResultSets = True (для Entity Framework с SQL azure)) в нашей строке подключения к базе данных, которую мы по праву сделали.

При выполнении запроса к базе данных из нашего приложения мы получаем следующее исключение: "Существует уже открытый DataReader, связанный с этой Командой, который должен быть закрыт первым"., который, как я полагаю, очень связан с свойством MultipleActiveResultSets = True.

Приложение отлично работает в локальной среде с нашей локально развернутой базой данных, а также с использованием базы данных SQL azure (в локальной среде).

Но при развертывании нашего облачного приложения мы получаем вышеупомянутую ошибку. Кажется, что свойство MultipleActiveResultSets = True не считывается из строки подключения.

Строка подключения, которую я использую, выглядит следующим образом:

    <connectionStrings>
        <add name="#DBInstanceName#" connectionString="Data Source=tcp:#server#.database.windows.net,1433;Initial Catalog=#DBName#;User ID="UserName#@#server#;Password="#password#";MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/>
    </connectionStrings>

Я могу подключиться к базе данных SQL Azure, используя приведенную выше строку соединения из локально развернутого приложения без каких-либо исключений. Но одно и то же приложение при развертывании в облаке с использованием одной и той же строки соединения дает мне вышеупомянутую ошибку.

Не могли бы вы помочь нам установить то же самое?

4b9b3361

Ответ 1

У меня только одна проблема. Я попытался установить "MultipleActiveResultSets = True" в соединении Web.config - никаких результатов. Наконец, я разрешил проблему, вручную отредактировав строку Connection непосредственно на Azure Dashboard для веб-сайта. На вкладке "Настройка" есть настройки "Строки подключения", где вы должны вручную добавить "MultipleActiveResultSets = True"; строка. После этого я наконец-то работал с MARS.

Ответ 2

В качестве альтернативы вы можете добавить в строку соединения "MultipleActiveResultSets = true" и обновить целевой web.config при использовании функции "Опубликовать" в Visual Studio. Обязательно выберите "Использовать эту строку подключения во время выполнения (обновить пункт назначения web.config)". enter image description here

Ответ 3

Вам нужно установить multipleresultsets = true в connectionstring и перезапустить.

Удаленный ответ

Изменить: Это обсуждается! Проверьте комментарий ниже... Я не успел исследовать...

Я думаю, что он уже включен.

Я не мог найти источник на месте, но Фейсал Мохамуд (Менеджер программ, Entity Framework) заявляет следующее в 2010 году: "Само собой разумеется, мы обязательно убедимся, что MARS автоматически включается для SQL Azure когда мы собираемся выпустить следующее обновление для продукт". Найдено здесь: http://blogs.msdn.com/b/adonet/archive/2010/06/09/remember-to-re-enable-mars-in-your-sql-azure-based-ef-apps.aspx

Ответ 4

Мы находимся на новом портале Azure и тоже имеем эту проблему. MARS работал во всех локальных средах разработчиков, но бросил на Azure такое же неприятное исключение. Мы проверили, что строка подключения в физическом файле web.config, развернутом в Azure, содержала MultipleActiveResultSets=true;, но приложение, похоже, не выполнялось. В конечном итоге работала с экземпляром приложения > настройки > подключения к данным и удалением соединения с тем же именем, что и вопрос, указанный в файле web.config. Я предполагаю, что тот, что Azure хранит, превосходит ту, что находится в развернутом web.config.

Ответ 6

У меня такая же проблема, но я решил MultipleActiveResultSets = True в строке соединения из помощника публикации, так как irium