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

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

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

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

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

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

5 ответов


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


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

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

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

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

Решение: виновником был Microsoft SQL Server 2014 SP1 Security обновление (KB3070446)!! Я откатил обновление и все работало как шарм!

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


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

сброс пула приложений получил мое приложение обратно и работает.


была эта ошибка после удаления MaxDegreeOfParallelism, который по умолчанию установлен в -1 или без ограничения при установке БД.База данных.CommandTimeout = 0.

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

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


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

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

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

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

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