Соединение с сервером было успешно установлено, но во время рукопожатия перед входом в систему произошла ошибка - PullRequest
97 голосов
/ 17 июля 2010

При попытке подключиться к производственной БД из локальной среды я получаю следующую ошибку.

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

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

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

на MyWebsiteDAL.clsForumQuestion.SelectAll (Int32 CurrentPageIndex, Int32 PageSize) в D: \ EDrive \ Мои веб-сайты \ MyWebsite \ MyWebsite \ MyWebsiteDAL \ clsForumQuestion.cs:строка 821 в CodeConnect.Default.Page_Load (Отправитель объекта, EventArgs e) в D: \ EDrive \ Мои веб-сайты \ MyWebsite \ MyWebsite \ MyWebsite \ Default.aspx.cs: строка 100 в System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr)fp, Object o, Object t, EventArgs e) в System.Web.Util.CalliEventHandlerDelegateProxy.Callback (отправитель объекта, EventArgs e) в System.Web.UI.Control.OnLoad (EventArgs e) в System.Web.UI.Control.LoadRecursive () в System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint)

Любая идея, что можетздесь не так?

Ответы [ 17 ]

144 голосов
/ 17 июля 2010

Решение

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

2) Перестроить проект.

3) Сброс IIS

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

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

12 голосов
/ 06 февраля 2014

- я сохранил свою работу,
- Закрыто Visual Studio, затем
- заново открыл мой проект

У меня всегда работает.

9 голосов
/ 19 августа 2015

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

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

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

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

7 голосов
/ 23 октября 2014

Запуск следующей команды работал для меня:

netsh Winsock reset

При взгляде https://serverfault.com/a/487139/250527

5 голосов
/ 05 декабря 2010

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

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

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

5 голосов
/ 14 ноября 2012

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

3 голосов
/ 10 марта 2016

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

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

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

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

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

3 голосов
/ 25 июля 2015

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

netsh Winsock reset

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

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

Надеюсь, что это

3 голосов
/ 25 июня 2013

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

Persist Security Info=True;

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

2 голосов
/ 18 февраля 2015

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

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

enter image description here

...