Соединение с сервером было успешно установлено, но затем произошла ошибка во время рукопожатия перед входом в систему.

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

Раньше мне удавалось подключить производственную базу данных, но внезапно появляется следующая ошибка, есть идеи?

Соединение с сервером было успешно установлено, но затем произошла ошибка во время квитирования перед входом в систему. (поставщик: поставщик TCP, ошибка: 0 - дескриптор недействителен.)

Я пытался запустить веб-сайт asp.net на локальном ПК, у которого есть строка подключения к производственной БД, ниже приведена трассировка стека для ошибки, которую я получаю в локальной среде.

>    at MyWebsiteDAL.clsForumQuestion.SelectAll(Int32 CurrentPageIndex, Int32 PageSize) in D:\EDrive\My WebSites\MyWebsite\MyWebsite\MyWebsiteDAL\clsForumQuestion.cs:line 821
       at CodeConnect.Default.Page_Load(Object sender, EventArgs e) in D:\EDrive\My WebSites\MyWebsite\MyWebsite\MyWebsite\Default.aspx.cs:line 100
       at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
       at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
       at System.Web.UI.Control.OnLoad(EventArgs e)
       at System.Web.UI.Control.LoadRecursive()
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Есть идеи, что здесь могло пойти не так?


person Jordon Willis    schedule 17.07.2010    source источник
comment
К какой СУБД вы подключаетесь?   -  person Will A    schedule 17.07.2010
comment
Можете ли вы подключиться с локального ПК с помощью SSMS? Этот вопрос лучше задать на serverfault.com   -  person Will A    schedule 17.07.2010
comment
Да, я могу подключиться. То, что я наблюдал, внезапно заработало.   -  person Jordon Willis    schedule 17.07.2010
comment
Я считаю, что этот вопрос относится к StackOverflow (а не к ServerFault), потому что основной проблемой, вызвавшей ошибку, был Asp.net Cassini в Visual Studio. Остановка всех существующих экземпляров Cassini (WebDev.WebServer.exe) и повторный запуск приложения сработали для меня.   -  person MikeTeeVee    schedule 13.09.2011
comment
@ MikeTeeVee У меня такая же проблема с простым приложением WinForm. Никакого кассини.   -  person Sylvain Rodrigue    schedule 31.08.2016


Ответы (26)


Решение

1) Очистите свое решение VS.Net

2) Восстановить проект.

3) Сбросить IIS

4) Снова запустите проект.

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

person Jordon Willis    schedule 17.07.2010
comment
У меня была аналогичная проблема (тоже с локальным хостом). Ключевым моментом, может быть, был пункт 3. Все, что мне, казалось, нужно было сделать, это убить экземпляр VS WebServer (Cassini) и перестроить и нажать F5. Это решило проблему для меня. Спасибо за Ваш ответ. (Вам следует подумать о том, чтобы пометить его как решение) - person Amadiere; 07.03.2011
comment
Это решение также сработало для меня. Я тоже использовал VS Web Server (Cassini), а не IIS, точно так же, как Amadiere. - person Simon Lomax; 07.04.2011
comment
Это больше похоже на обходной путь, чем на исправление. Интересно, связана ли настоящая проблема с пулом соединений. - person jrummell; 29.06.2011
comment
Спасибо! Это внезапно начало выдавать и мне эту ошибку. Я редактировал страницу aspx и отлаживал, когда она начала выдавать эту ошибку от одной сборки к другой. (К вашему сведению: я подключался к SQL Server 2008 Express на Arvixe). Я открыл панель задач и остановил все серверы разработки Asp.net (Cassini). Повторно запустил и все снова заработало. Думал, что теряю это на секунду. - person MikeTeeVee; 13.09.2011
comment
Все вышеперечисленное я пробовал безуспешно. Чтобы все заработало, потребовалась перезагрузка. - person Matthew Fotzler; 07.07.2013
comment
У меня сработало только с 1 и 2 уровнями. Спасибо. - person QMaster; 26.02.2014
comment
Под сбросом IIS, я полагаю, вы имели в виду перезапуск IIS? Это было решение для меня, не нужно ничего делать в моем решении. - person Ian Kemp; 03.07.2014
comment
Это решение также работало для следующего сообщения об ошибке: System.Data.SqlClient.SqlException (0x80131904): соединение с сервером было успешно установлено, но затем во время процесса входа в систему произошла ошибка. (поставщик: поставщик TCP, ошибка: 0 - дескриптор недействителен.) --- ›System.ComponentModel.Win32Exception (0x80004005): дескриптор недействителен Спасибо! - person Bjørn Otto Vasbotten; 05.08.2014
comment
Было это снова сегодня. Все, что вам нужно сделать, это запустить iisreset из командной строки администратора. - person Ian Kemp; 02.10.2014
comment
Я также сосредоточился на шаге 3. В моем случае я использовал IIS Express. Сначала я обнаружил два его запущенных экземпляра (панель задач на панели задач). Я вышел из обоих, но все равно получил ошибку. Затем я использовал диспетчер задач, чтобы убить рабочий процесс iisexpress.exe * 32. Это решило проблему. - person Terence Golla; 30.10.2014
comment
Этот ответ можно улучшить, предоставив некоторые возможные направления для анализа первопричин. Обходные решения имеют значение, но более полезно знать, почему это происходит и почему обходные пути работают. - person laindir; 08.08.2016
comment
просто сброс iis сделал это за меня - person toddmo; 12.10.2016

  • Сохраните свою работу,
  • Закройте Visual Studio, затем
  • Снова откройте свой проект

Это сработало для меня.

person Dumisani    schedule 06.02.2014
comment
Это тоже сработало для меня, но я часто обнаруживаю, что приготовление кофе во время перезапуска имеет решающее значение. - person ED-209; 19.09.2014
comment
У меня была аналогичная проблема, но вместо этого с сервером узла. Я запускал сервер узла на гостевой виртуальной машине ubuntu и получал доступ с узла виртуальной машины Windows 10. Приостановка и сохранение виртуальной машины, затем сброс хоста Windows 10, а затем открытие резервной копии виртуальной машины работали, поэтому я предположил, что это проблема Windows, а не локального сервера. Но тогда я только что попытался сбросить локальный сервер узла, и это тоже исправило его ... так что кто знает, ха - person RyanQuey; 23.03.2020

У меня сработала следующая команда:

netsh Winsock reset

Видно на https://serverfault.com/a/487139/250527

person Ricardo Stuven    schedule 23.10.2014
comment
Это решило мою проблему. Я должен обедать сетевику, потому что бросил его под автобус. - person greg; 17.04.2015
comment
К вашему сведению, этому reset требуется перезапуск системы. - person wqw; 22.03.2018
comment
Через 2,5 часа это спасло мой бекон. Большое спасибо! - person Peter Harrison; 19.12.2020

В моем случае эта ошибка произошла с ядром сети и Microsoft.Data.SqlClient. Решением было добавить ;TrustServerCertificate=true в конец строки подключения.

person gratinierer    schedule 14.07.2020
comment
Спасибо, ты меня спас :) - person DiPix; 24.07.2020
comment
Это было при использовании самоподписанных сертификатов - person Geoff Gunter; 07.08.2020

У меня была такая же проблема, я хранил данные сеанса в базе данных, в строке подключения было Encrypt = True, которое, как я полагаю, сообщило клиенту sql подключиться к серверу в безопасном (SSL) режиме , удаление помогло!

person Terry Kernan    schedule 14.11.2012
comment
Этот флаг будет добавлен в строку подключения, если вы собираетесь использовать базу данных Windows Azure SQL. Я почти уверен, что он также будет использоваться для других поставщиков PaaS / IaaS / Server. - person Parth Shah; 05.11.2014
comment
AzureSQL требует истинного шифрования blogs.msdn.microsoft .com / buckwoody / 2012/03/06 / - person Jeson Martajaya; 12.09.2018

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

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

System.Data.SqlClient.SqlException (0x80131904): истекло время ожидания подключения. Время ожидания истекло при попытке использовать подтверждение квитирования перед входом в систему. Это могло быть связано с тем, что квитирование перед входом в систему не удалось или сервер не смог ответить вовремя. Время, затраченное на попытку подключения к этому серверу, было - инициализация [Pre-Login] = 43606; рукопожатие = 560; ---> System.ComponentModel.Win32Exception (0x80004005): время ожидания операции истекло

Обе проблемы исчезли после того, как система была изменена, чтобы она могла работать с меньшим объемом оперативной памяти.

person Starnuto di topo    schedule 19.08.2015
comment
Подтвержденный. Я выполнял интенсивную обработку на SQL Server с C # с помощью parallel.foreach на своем ноутбуке. Мое использование памяти было максимальным. Компьютер почти не использовался около 15 минут, прежде чем я получил эту ошибку. - person TheLegendaryCopyCoder; 28.09.2016

Вы можете проверить несколько вещей:

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

  2. Проверьте строку подключения. Иногда, если вы используете IP-адрес или имя сервера, это вызывает эту ошибку. Попробуйте оба.

person Richard Fantozzi    schedule 05.12.2010

В моем случае это было:

Persist Security Info=True;

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

person delliottg    schedule 25.06.2013

Как описано в ответе Рикардо,

netsh Winsock reset

работал у меня,

PS, если у вас установлен диспетчер загрузок в Интернете или такие программы, которые изменяют настройки IP, то после выполнения этой команды при перезагрузке компьютера IDM попросит изменить настройку, в этом случае установите «НЕТ», а затем запустите приложение будет работать правильно.

Надеюсь на это

person Vishal Sharma    schedule 25.07.2015

У меня была аналогичная проблема, когда я не мог подключиться к базе данных и попробовал рекомендации здесь.

В конце концов, у меня сработало следующее:

Использовал средство диспетчера конфигурации SQL Server для включения протоколов TCP / IP и / или именованных каналов на клиентском компьютере SQL Server.

  1. Нажмите кнопку «Пуск», выберите «Все программы» и нажмите «Диспетчер конфигурации SQL Server».
  2. Щелкните, чтобы развернуть «Сетевая конфигурация SQL Server», а затем щелкните «Клиентские протоколы».
  3. Щелкните правой кнопкой мыши протокол TCP / IP и выберите Включить.
  4. Щелкните правой кнопкой мыши протокол именованных каналов и выберите команду Включить.
  5. Если будет предложено, перезапустите службу SQL-сервера.

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

person daffyjeje    schedule 10.03.2016

Я перезапустил службу SQL Server (Sharepoint), и проблема была решена.

person user2087459    schedule 26.08.2013

Для меня решение - убить зомби-рабочие процессы IIS Express.

например найдите в диспетчере задач и завершите задачу.

введите описание изображения здесь

person Daniel de Zwaan    schedule 18.02.2015

У меня возникла точно такая же проблема без изменений в базе кода или серверах. Оказалось, что сервер БД работал на 100% ЦП, а SQL Server не хватало процессорного времени, что вызвало тайм-аут.

person TheLukeMcCarthy    schedule 03.02.2016

Пробовал большую часть вышеперечисленного, и ничего не получилось. Затем отключил программное обеспечение VPN (NordVPN), и все стало нормально.

person Paul Evans    schedule 06.03.2020
comment
Спасибо! Ты спас мне день :) - person Rob; 21.01.2021

У меня была такая же проблема, и мне не повезло с предлагаемыми исправлениями. Затем я наткнулся на this article и увидел комментарий Мирра относительно программы под названием Sendori, блокирующей LSP. Не знаю, как он попал на мой компьютер, но он был там, и его удаление устранило проблему.

Если статья не работает, просто проверьте свои программы и удалите Sendori, если вы ее видите.

person rickeroye    schedule 09.01.2013

Была такая же проблема через много дней. Мне пришлось явно добавить поддержку TLS1.2 в мой основной проект, чтобы устранить эту ошибку, и все работало нормально. (ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;)

См. Ссылку ниже для получения дополнительной информации (спасибо автору Усману Хуршиду) https://www.itechtics.com/connection-successfully-established-error-occured-pre-login-handshake/

person Phantom    schedule 30.09.2019

Если вы подключаетесь к старому SQL Server:

Переключитесь с System.Data. SqlClient.SqlConnection на System.Data. OleDb.OleDbConnection

Используйте строку подключения OleDb:

<connectionStrings>
<add name="Northwind" connectionString="Provider=SQLOLEDB.1; Data Source=MyServer; Initial Catalog=Northwind;  Persist Security Info=True; User ID=abc; Password=xyz;" providerName="System.Data.OleDb" />
</connectionStrings>
person Dominic Isaia    schedule 19.12.2019

Я пробовал много решений за последний месяц, ни одно не помогло. Проблема в том, что производственная база данных находится внутри VPN, и почему-то поставщик услуг Интернета считает, что HTTP-соединение небезопасно. Однако мне удалось подключиться к той же производственной БД из SSMS (использует TCP).

Мое решение: использовать мобильный телефон в качестве точки доступа и использовать мобильные данные вместо моего рабочего / домашнего Wi-Fi.

person mihai_omega    schedule 07.05.2020
comment
То же и в моем случае. Спасибо! - person Deeple; 06.06.2020

Была та же проблема, причиной этого была библиотека BCrypt.Net, скомпилированная с использованием .NET 2.0 framework, в то время как весь проект, который ее использовал, компилировался с .NET 4.0. Если симптомы такие же, попробуйте загрузить исходный код BCrypt и перестроить его в конфигурации выпуска < / em> в .NET 4.0. После того, как я это сделал, «рукопожатие перед входом» сработало нормально. Надеюсь, это кому-нибудь поможет.

person Eadel    schedule 03.10.2012

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

Я поймал виновника: если вы используете файл *.ini для своей системы, вы можете проверить, какое имя сервера было введено там, и убедиться, что оно совпадает с тем, что указано в строке подключения web.config.

person user3619399    schedule 24.10.2014

Здесь та же проблема, и ни один из перечисленных здесь ответов не работал, а также какие-либо решения, которые я мог найти в Интернете. Проблема возникла вскоре после того, как на моем компьютере разработчика было применено юбилейное обновление Windows 10, и затронуло только мой старый экземпляр SQL Server 2005. Мне не удалось подключиться к экземпляру через свои веб-приложения или даже с помощью Sql Management Studio.

Как бы то ни было, вот что решило это для меня:

  1. Откройте диспетчер конфигурации SQL Server (в зависимости от того, какую версию SQL Server вы используете):

    • C:\Windows\SysWOW64\SQLServerManager.msc
    • C: \ Windows \ SysWOW64 \ SQLServerManager10.msc ИЛИ
    • C: \ Windows \ SysWOW64 \ SQLServerManager12.msc ИЛИ
    • так далее
  2. Выберите службы SQL Server

  3. Найдите проблемную службу и просмотрите свойства

    • eg SQL Server (SQL2005) in my case
  4. На вкладке "Вход в систему" измените "Встроенная учетная запись" на "Сетевая служба"

Это почти то же самое, что и сказано в этом случайном решении: http://www.kutayzorlu.com/operating-systems/linux-unix-redhat-debian-ubuntu-opensuse-centos/general-server-administrating/error-фиксированное-соединение-было-успешно-установлено-с-сервером-но-затем-произошла-ошибка-во-время-перед-входом-рукопожатие-12405.html

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

person Arkiliknam    schedule 22.06.2017

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

введите здесь описание изображения

person Ifesinachi Bryan    schedule 08.11.2017

В моем случае Повторное включение TLS 1.0 на сервере БД решило эту проблему.

person Chinthaka Fernando    schedule 07.01.2020
comment
Это не совсем решение. Я не буду отрицать это, потому что в средах разработки это может кому-то помочь, но это подвергает серьезным угрозам безопасности. - person Francesco de Guytenaere; 21.01.2021

В моем случае это было несоответствие протокола TLS между Raspberry Pi, на котором размещено приложение .Net Core 3.1, запрашивающее Windows Server 2012 с MSSQL. Я пробовал много изменений версии протокола TLS на стороне Windows Server, но безрезультатно. Я наконец нашел этот пост https://github.com/dotnet/SqlClient/issues/126, указывающий на изменение на стороне клиента, то есть на обновление /etc/ssl/openssl.cnf на стороне RPi, и это отлично сработало для меня.

person P.Laf    schedule 12.10.2020

Для меня это произошло на виртуальной машине HyperV, которая обращалась к моей базе данных на моем локальном (хост-компьютере). В основном все работает нормально, но после перезагрузки возникает какое-то странное условие, что эта ошибка начинает исходить из приложений виртуальной машины. На сетевом уровне что-то ужасно запутывается. Однако я обнаружил, что если я пингую виртуальный сервер с хост-сервера, это, похоже, решает проблему (не знаю, почему именно). Но это может кому-то помочь.

person Keith Nicholas    schedule 14.12.2020

В моем случае соединение моего API с БД работало нормально при запуске на моем локальном компьютере, эта ошибка возникала только при запуске приложения .NET Core 5 API в контейнере докера, использующем базовый образ: mcr.microsoft.com/dotnet/aspnet:5.0. Проблема заключалась в несоответствии версии TLS между SQL Server и одной из наших зависимостей. Исправление заключалось в добавлении следующей строки в API Dockerfile, понижающей уровень безопасности TLS:

ЗАПУСТИТЬ sed -i 's / DEFAULT @ SECLEVEL = 2 / DEFAULT @ SECLEVEL = 1 / g' /etc/ssl/openssl.cnf

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

person Thomas    schedule 13.07.2021