Eine Verbindung zum Server wurde erfolgreich hergestellt, aber während des Handshakes vor der Anmeldung ist ein Fehler aufgetreten

111

Ich erhalte die folgende Fehlermeldung, wenn ich versuche, die Produktionsdatenbank über die lokale Umgebung zu verbinden.

Ich konnte die Production DB schon einmal verbinden, aber plötzlich erhalte ich folgenden Fehler, eine Idee?

Eine Verbindung zum Server wurde erfolgreich hergestellt, aber während des Handshakes vor der Anmeldung ist ein Fehler aufgetreten. (Anbieter: TCP-Anbieter, Fehler: 0 - Das Handle ist ungültig.)

Ich habe versucht, die asp.net-Website auf einem lokalen PC mit der Verbindungszeichenfolge Production DB auszuführen. Im Folgenden finden Sie eine Stapelverfolgung für Fehler, die in der lokalen Umgebung auftreten.

>    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)

Irgendeine Idee, was hier schief gelaufen sein könnte?

Jordon Willis
quelle
Mit welchem ​​DBMS verbinden Sie sich?
Will A
1
Können Sie mit SSMS eine Verbindung vom lokalen PC herstellen? Diese Frage sollte besser auf serverfault.com gestellt werden
Will A
Ja, ich kann eine Verbindung herstellen. Was ich beobachte, war plötzlich, dass es anfängt zu arbeiten.
Jordon Willis
2
Ich glaube, diese Frage gehört zu StackOverflow (und nicht zu ServerFault), da das zugrunde liegende Problem, das den Fehler verursacht, Asp.net Cassini in Visual Studio war. Das Stoppen aller vorhandenen Cassini-Instanzen (WebDev.WebServer.exe) und das erneute Ausführen der App haben bei mir funktioniert.
MikeTeeVee
@ MikeTeeVee Ich habe das gleiche Problem mit einer einfachen WinForm-Anwendung. Keine Cassini beteiligt.
Sylvain Rodrigue

Antworten:

154

Lösung

1) Reinigen Sie Ihre VS.Net-Lösung

2) Projekt neu erstellen.

3) IIS zurücksetzen

4) Führen Sie das Projekt erneut aus.

Im Grunde hat das mein Problem gelöst, aber in meinem Fall bekam ich diesen Fehler nicht und plötzlich gibt mir meine lokale Umgebung den oben genannten Fehler, also könnte dieser Trick für mich funktionieren.

Jordon Willis
quelle
25
Ich hatte ein ähnliches Problem (localhost auch). Der entscheidende Punkt scheint vielleicht Punkt 3 gewesen zu sein. Alles, was ich zu tun schien, war, die Instanz des VS WebServer (Cassini) zu beenden und F5 neu zu erstellen und zu drücken. Das hat es für mich gelöst. Danke für deine Antwort. (Sie sollten in Betracht ziehen, es als Lösung zu markieren)
Amadiere
1
Diese Lösung hat auch bei mir funktioniert. Auch ich habe VS Web Server (Cassini) im Gegensatz zu IIS genauso wie Amadiere verwendet.
Simon Lomax
7
Dies klingt eher nach einer Problemumgehung als nach einer Lösung. Ich frage mich, ob das eigentliche Problem mit dem Verbindungspooling zu tun hat.
Jrummell
2
Hatte das heute wieder. Alles, was Sie tun müssen, ist iisreset an einer Admin-Eingabeaufforderung auszuführen.
Ian Kemp
6
Diese Antwort könnte verbessert werden, indem einige mögliche Anweisungen für die Ursachenanalyse angegeben werden. Workarounds haben einen Wert, aber es ist nützlicher zu wissen, warum dies geschieht und warum das Workaround funktioniert.
Laindir
15

- Speichern Sie Ihre Arbeit,
- Schließen Sie Visual Studio und
- öffnen Sie Ihr Projekt erneut

Funktioniert immer für mich.

Dumisani
quelle
29
Das hat auch bei mir funktioniert, aber ich finde oft, dass das Zubereiten eines Kaffees beim Neustart den Unterschied ausmacht.
ED-209
Ich hatte ein ähnliches Problem, aber stattdessen mit einem Knotenserver. Ich habe einen Knotenserver auf einem Ubuntu-VM-Gast ausgeführt und vom Windows 10-VM-Host aus darauf zugegriffen. Das Anhalten und Speichern der VM, das Zurücksetzen des Windows 10-Hosts und das anschließende Öffnen der VM funktionierten. Daher nahm ich an, dass es sich um ein Problem mit Windows und nicht mit dem lokalen Server handelte. Aber dann habe ich gerade versucht, den lokalen
Knotenserver zurückzusetzen
10

Das Ausführen des folgenden Befehls hat bei mir funktioniert:

netsh Winsock reset

Gesehen unter https://serverfault.com/a/487139/250527

Ricardo Stuven
quelle
2
Dies löste mein Problem. Ich schulde dem Netzwerk-Typ das Mittagessen, weil ich ihn unter den Bus geworfen hatte.
Greg
Zu Ihrer Information, dies reseterfordert einen Neustart des Systems.
wqw
9

Ich habe diesen Fehler beim Ausführen einiger sehr speicherintensiver Prozesse festgestellt. Als dem System der Speicher knapp wurde, bemerkte ich diese Art von Fehler. Ich musste den Algorithmus ändern, um den RAM besser nutzen zu können.

Zu beachten ist, dass einige Threads diese Ausnahme auslösten, andere jedoch:

System.Data.SqlClient.SqlException (0x80131904): Verbindungszeitlimit abgelaufen. Die Zeitüberschreitung beim Versuch, die Handshake-Bestätigung vor der Anmeldung zu nutzen. Dies kann daran liegen, dass der Handshake vor der Anmeldung fehlgeschlagen ist oder der Server nicht rechtzeitig antworten konnte. Die Dauer des Versuchs, eine Verbindung zu diesem Server herzustellen, betrug: [Voranmeldung] Initialisierung = 43606; Handschlag = 560; ---> System.ComponentModel.Win32Exception (0x80004005): Die Wartezeit ist abgelaufen

Beide Probleme verschwanden, nachdem das System geändert wurde, sodass es mit weniger RAM ausgeführt werden konnte.

Starnuto di Topo
quelle
1
Bestätigt. Ich habe eine intensive Verarbeitung auf SQL Server von C # mit parallel.foreach auf meinem Laptop ausgeführt. Meine Speichernutzung war maximal. Der Computer war ungefähr 15 Minuten lang kaum benutzbar, bevor ich diesen Fehler bekam.
TheLegendaryCopyCoder
7

Ich hatte das gleiche Problem, ich habe Sitzungsdaten in der Datenbank gespeichert, die Verbindungszeichenfolge enthielt Encrypt = True. Ich gehe davon aus, dass der SQL-Client angewiesen wurde, im sicheren (SSL) Modus eine Verbindung zum Server herzustellen.

Terry Kernan
quelle
1
Dieses Flag wird Ihrer Verbindungszeichenfolge hinzugefügt, wenn Sie eine Windows Azure SQL-Datenbank verwenden. Ich bin mir ziemlich sicher, dass es auch für andere PaaS / IaaS / Server-Anbieter verwendet wird.
Parth Shah
AzureSQL erfordert die Verschlüsselung von echten blogs.msdn.microsoft.com/buckwoody/2012/03/06/…
Jeson Martajaya
5

Vielleicht möchten Sie ein paar Dinge überprüfen:

  1. Ihr Produktionsserver erlaubt Remoteverbindungen. (Möglicherweise hat jemand dies deaktiviert, insbesondere wenn Sie einen DBA haben.)

  2. Überprüfen Sie Ihre Verbindungszeichenfolge. Wenn Sie eine IP-Adresse oder einen Servernamen verwenden, führt dies manchmal zu diesem Fehler. Versuchen Sie beides.

Richard Fantozzi
quelle
4

In meinem Fall war es:

Persist Security Info=True;

in meiner Verbindungszeichenfolge, die entfernt werden musste. Nachdem ich das getan hatte, hatte ich keine Probleme mehr.

delliottg
quelle
3

Wie in der Antwort von Ricardo beschrieben ,

netsh Winsock reset

hat für mich gearbeitet,

PS: Wenn Sie einen Internet-Download-Manager oder solche Programme haben, die Ihre IP-Einstellung ändern, wird nach dem Ausführen dieses Befehls beim Neustart Ihres Computers IDM aufgefordert, die Einstellung zu ändern. Setzen Sie in diesem Fall NEIN und führen Sie dann Ihre Anwendung aus. Dies funktioniert ordnungsgemäß.

Hoffe es

Vishal Sharma
quelle
3

Ich hatte ein ähnliches Problem, bei dem ich keine Verbindung zu einer Datenbank herstellen konnte, und habe die Empfehlungen hier ausprobiert.

Am Ende des Tages hat das für mich funktioniert:

Verwendete das SQL Server Configuration Manager-Tool, um die Protokolle TCP / IP und / oder Named Pipes auf dem SQL Server-Clientcomputer zu aktivieren.

  1. Klicken Sie auf Start, zeigen Sie auf Alle Programme, und klicken Sie auf SQL Server Configuration Manager.
  2. Klicken Sie hier, um die SQL Server-Netzwerkkonfiguration zu erweitern, und klicken Sie dann auf Clientprotokolle.
  3. Klicken Sie mit der rechten Maustaste auf das TCP / IP-Protokoll, und klicken Sie dann auf Aktivieren.
  4. Klicken Sie mit der rechten Maustaste auf das Named Pipes-Protokoll, und klicken Sie dann auf Aktivieren.
  5. Starten Sie den SQL Server-Dienst neu, wenn Sie dazu aufgefordert werden.

Ich bin mir immer noch nicht sicher, warum oder wann dies deaktiviert wurde.

daffyjeje
quelle
2

Für mich besteht die Lösung darin, Zombie-IIS-Express-Worker-Prozesse zu beenden.

zB im Task-Manager suchen und Aufgabe beenden.

Geben Sie hier die Bildbeschreibung ein

Daniel de Zwaan
quelle
2

In meinem Fall trat dieser Fehler bei dot net core und auf Microsoft.Data.SqlClient. Die Auflösung bestand darin ;TrustServerCertificate=true, am Ende der Verbindungszeichenfolge hinzuzufügen .

gratinierer
quelle
Danke, du hast mich gerettet :)
DiPix
1

Ich hatte das gleiche Problem und hatte kein Glück mit den vorgeschlagenen Korrekturen. Ich bin dann auf diesen Artikel gestoßen und habe den Kommentar von Mirrh zu einem Programm namens Sendori gesehen, das den LSP blockiert. Keine Ahnung, wie es auf meinen Computer kam, aber da war es und das Entfernen behebt das Problem.

Wenn der Artikel nicht funktioniert, überprüfen Sie einfach Ihre Programme und deinstallieren Sie Sendori, wenn Sie es sehen.

Rickeroye
quelle
1

Ich habe den SQL Server-Dienst (Sharepoint) neu gestartet und das Problem behoben.

user2087459
quelle
1

Ich hatte genau das gleiche Problem ohne Änderungen an der Codebasis oder den Servern. Es stellte sich heraus, dass der DB-Server mit 100% CPU lief und SQL Server keine CPU-Zeit mehr hatte, was zu einem Timeout führte.

TheLukeMcCarthy
quelle
1

Versuchte die meisten der oben genannten und nichts funktionierte. Dann schaltete die VPN-Software (NordVPN) aus und alles war in Ordnung.

Paul Evans
quelle
1

Ich habe im letzten Monat viele Lösungen ausprobiert, keine hat funktioniert. Das Problem ist, dass sich die Produktionsdatenbank in einem VPN befindet und der ISP-Anbieter der Meinung ist, dass die HTTP-Verbindung nicht sicher ist. Ich konnte jedoch über SSMS eine Verbindung zu derselben Produktionsdatenbank herstellen (verwendet TCP).

Meine Lösung: Verwenden Sie das Mobiltelefon als Hotspot und verwenden Sie mobile Daten anstelle meines WLANs im Büro / zu Hause.

mihai_omega
quelle
1
Das gleiche in meinem Fall. Vielen Dank!
David Lo
0

Hatte das gleiche Problem, der Grund dafür war die BCrypt.Net-Bibliothek, die mit dem .NET 2.0-Framework kompiliert wurde, während das gesamte Projekt, das es verwendete, mit .NET 4.0 kompiliert wurde. Wenn die Symptome gleich sind, laden Sie den BCrypt-Quellcode herunter und erstellen Sie ihn in der Release-Konfiguration in .NET 4.0 neu. Nachdem ich es getan hatte, funktionierte "Pre-Login Handshake" gut. Hoffe es hilft jedem.

Eadel
quelle
0

Ich habe diesen Fehler erlebt und alle Vorschläge von euch hier gemacht, aber keiner hatte Auswirkungen auf meinen Fehler.

Ich habe den Schuldigen entdeckt: Wenn Sie eine *.iniDatei für Ihr System verwenden, möchten Sie möglicherweise überprüfen, welcher Servername dort eingegeben wurde, und sicherstellen, dass er mit dem in Ihrer web.config-Verbindungszeichenfolge übereinstimmt.

user3619399
quelle
0

Das gleiche Problem hier und keine hier aufgeführten Antworten funktionierten, noch irgendwelche Lösungen, die ich online finden konnte. Das Problem begann kurz nach der Anwendung des Windows 10-Jubiläumsupdates auf meinem Entwicklungs-PC und betraf nur meine alte SQL Server 2005-Instanz. Ich konnte keine Verbindung zur Instanz über meine Webanwendungen oder sogar über SQL Management Studio herstellen.

Für das, was es wert ist, ist es das, was es für mich gelöst hat:

  1. Öffnen Sie SQL Server Configuration Manager (abhängig von der Version von SQL Server, die Sie ausführen):

    • C: \ Windows \ SysWOW64 \ SQLServerManager.msc
    • C: \ Windows \ SysWOW64 \ SQLServerManager10.msc ODER
    • C: \ Windows \ SysWOW64 \ SQLServerManager12.msc ODER
    • etc
  2. Wählen Sie SQL Server Services

  3. Suchen Sie den problematischen Dienst und zeigen Sie Eigenschaften an

    • zB SQL Server (SQL2005) in meinem Fall
  4. Ändern Sie auf der Registerkarte "Anmelden" das "Integrierte Konto" in "Netzwerkdienst".

Welches ist fast, was diese zufällige Lösung sagte: http://www.kutayzorlu.com/operating-systems/linux-unix-redhat-debian-ubuntu-opensuse-centos/general-server-administrating/error-fixed-a-connection -wurde-erfolgreich-mit-dem-Server-eingerichtet-aber-dann-ist-ein-Fehler-während-des-Pre-Login-Handshakes-12405.html aufgetreten

Ich habe mich ohne Grund für den Netzwerkdienst entschieden. Meins war bereits für die Verwendung des lokalen Systems konfiguriert. Diese Sicherheit spielt für mich keine Rolle, da sie nur auf meinem lokalen Entwicklungscomputer problematisch war und nur lokal aufgerufen wurde. Ich kann nicht raten, warum das funktioniert, aber es hat funktioniert.

Arkiliknam
quelle
0

In meinem Fall wurde der Fehler angezeigt, als ich auf eine entfernte Datenbank zugreifen wollte. Ich habe es jedoch gelöst, indem ich den SQL Server-Browserdienst gestartet habe.

Geben Sie hier die Bildbeschreibung ein

Ifesinachi Bryan
quelle
0

Wenn Sie eine Verbindung zu einem alten SQL Server herstellen:

Wechseln Sie von System.Data. SqlClient.SqlConnection to System.Data. OleDb.OleDbConnection

Verwenden Sie eine OleDb-Verbindungszeichenfolge:

<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>
Dominic Isaia
quelle