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

Невозможно избавиться от исключения "физическое соединение не используется"

Я собираюсь застрелить себя. Прошло несколько недель, пытаясь решить эту проблему. У нас есть веб-приложение ASP.NET MVC 4, которое использует SQL Server 2012 и Entity Framework как ORM и Unity для IoC. Веб-приложение размещено на Amazon EC2. Я начал получать исключение "Физическое соединение не используется". Это происходит несколько раз в день. Я искал много статей и форумов и пробовал все возможные предложения:

  • Пробовал удалять пул из строки подключения "Опрос = ложь"
  • Пробовал ограничивать размер пула и срок службы соединения
  • Попробовал сменить LifetimeManager Unity на HierarchicalLifetimeManager, PerRequestLifetimeManager. Также убедитесь, что контекст сущностей расположен после окончания запроса.
  • Удалены все ссылки TransactionScope

Когда происходит исключение, единственный способ восстановить приложение - перезагрузить сервер, что очень плохо!!!

Это полное исключение:

При отправке запроса на сервер произошла ошибка транспортного уровня. (поставщик: поставщик сеанса, ошибка: 19 - физическое соединение не используется)

4b9b3361

Ответ 1

Теперь я подтверждаю, изменив строку подключения на сервере, чтобы использовать ".". для источника данных вместо имени домена исключение, похоже, исчезло. Очень странно, поскольку доменное имя использовалось раньше. Должно быть какое-то обновление на SQL Server

Ответ 2

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

Подробные сведения о моей проблеме: Веб-приложение ASP.NET с целевой платформой .NET Framework 4.5, MVC ver. 5.2.3, Entity ver. 6.0.0.0, MS SQLServer Express 2014. Моя система dev работает под управлением Windows 7 Pro SP1.

Симптомы: Ошибка внезапно возникла (я не работал над проектом почти три недели, и в это время он функционировал нормально). Когда я запустил приложение, после входа в систему второй запрос, отправленный в базу данных с помощью структуры Entity ALLWAYS, сгенерировал ошибку "Возникла ошибка транспортного уровня при получении результатов с сервера. (Поставщик: поставщик сеанса, ошибка: 19 - Физическое соединение не используется)". Не важно, какая таблица была запрошена. Ошибка не прерывалась, и перезагрузка сервера не помогла. Ошибка произошла с использованием служб IIS и IIS.

SqlConnection.ClearAllPools() предотвратил ошибку только для одного запроса, и я не хотел добавлять это перед каждым вызовом Entity в программе. Я пробовал каждое решение на всех блогах безрезультатно, даже решения для других ошибок на уровне транспорта. Я откатил обновления пакетов для своих ссылок, пытаясь вернуться в рабочее состояние. Ничего!

Решение: Виной было обновление безопасности Microsoft SQL Server 2014 SP1 (KB3070446)! Я откатил это обновление, и все работало как шарм!

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

Ответ 3

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

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

Ответ 4

Если эта ошибка возникла после удаления MaxDegreeOfParallelism, которая по умолчанию установлена ​​на -1 или без ограничения при установке db.Database.CommandTimeout = 0.

Предложение состоит в том, чтобы явно установить MaxDegreeOfParallelism в безопасное значение.

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

Ответ 5

Соединение с базой данных закрывается сервером базы данных. Соединение остается действительным в пуле подключений вашего приложения; в результате, когда вы берете общую строку соединения и пытаетесь выполнить ее, вы не сможете добраться до базы данных. Если вы разрабатываете Visual Studio, просто закройте временный веб-сервер на панели задач.

Если это происходит в процессе производства, сброс пула приложений для вашего веб-сайта должен переработать пул соединений.

Возможно, из-за обновления системы предотвращения вторжений.

Пожалуйста, попробуйте обратиться к следующей теме: http://forums.asp.net/t/1908976.aspx

Надеюсь, это поможет.

Ответ 6

Для меня это была ошибка DNS, диагностированная потому, что использование имени сервера в строке подключения приводило к ошибке, но использование IP работало нормально. Откройте командную строку, запустите быстрый ipconfig/flushdns чтобы посмотреть, поможет ли это.

Ответ 7

У меня была такая же ошибка в течение 2 дней! и даже не знал, почему это вдруг произошло? !!

  • Как оказалось: у меня возникла проблема с доступом к сетевой аутентификации (из-за моего WiFi-соединения)... и как только я отключил/отключил свой WiFi и подключился только через кабельное (безопасное и стабильное) соединение... ошибка исчезла.,

  • Также я сделал следующее, например:

Перезапустил все службы SQL Server. Перезапустил мой экземпляр SQLServer. Добавил эти реквизиты в мою строку подключения DEF..

Connection Lifetime=30; Max Pool Size=350;Connection Timeout=30;Connection Lifetime=0;ConnectRetryCount=3;ConnectRetryInterval=10;