Beim Voranmelde-Handshake ist ein Fehler aufgetreten

9

Bitte lesen Sie das Ganze vollständig durch, bevor Sie es als Duplikat markieren.

In einem Projekt, das ich debugge, erhalte ich eine SqlException, die folgendes sagt:

  

Weitere Informationen: Eine Verbindung wurde erfolgreich mit dem Server hergestellt, aber beim Voranmeldungshandshake ist ein Fehler aufgetreten. (Anbieter: SSL-Anbieter, Fehler: 0 - Die Wartezeit ist abgelaufen.)

Dies trat während einer Debugsitzung auf, bei der die vorherige Sitzung nur Sekunden zuvor ohne Probleme ausgeführt wurde. Seit der ersten Ausnahme kann ich keine Verbindung zum Datenbankserver in diesem Projekt herstellen. Die Ausnahme wird beim Aufruf der Methode SqlConnection.Open () ausgelöst.

Der Hintergrund

Dies ist nicht das erste Mal, dass ich das erhalten habe. Zuvor hatte ich zwei Wochen lang damit zu kämpfen und schließlich ein Microsoft-Support-Ticket dafür eingerichtet. In diesem Fall stellte sich heraus, dass die ApplicationName-Eigenschaft für die Verbindungszeichenfolge zu lang war (wir verwendeten den vollständig qualifizierten Assemblynamen). Durch Verkürzen wurde das Problem behoben.

Diesmal gibt es

  • Kein ApplicationName-Wert angegeben
  • WinSocks ist im Standardzustand
  • Antivirus (ESET) wurde deaktiviert und war nicht das Problem.
  • Zwischen einer funktionierenden und einer nicht funktionierenden Debugsitzung wurde nichts installiert

Schließlich habe ich aus einer Laune heraus ein neues Projekt erstellt, dessen einziger Zweck es war, sich mit demselben SQL-Server zu verbinden. Ich habe die Verbindungszeichenfolge aus dem nicht arbeitenden Projekt in das neue Projekt kopiert und es verbindet. Gibt es eine Art von Caching pro Projektverbindung? Etwas, das ein Clean & gt; Rebuild und einen Neustart von Visual Studio und Windows überlebt?

Relevanter Code

%Vor%

Die Verbindungszeichenfolge, die übergeben wird, wird von einem SqlConnectionStringBuilder an anderer Stelle in der Anwendung ausgegeben. Die Verbindungszeichenfolge ähnelt: "Data Source=SERVER;Initial Catalog=DATABASE;Integrated Security=True;Connect Timeout=60"

    
CodeWarrior 24.04.2017, 20:37
quelle

2 Antworten

2

Versuchen Sie, Application Name=MyAppName; explizit zur Verbindungszeichenfolge hinzuzufügen. Der automatisch generierte Wert aus dem Assemblynamen könnte einen Grenzwert überschreiten.

Überprüfen Sie Netzwerkeinstellungen auf Dinge wie explizit begrenzte Bildgröße. Starten Sie den Router neu, wenn SQL Server auf einem anderen Computer ausgeführt wird.

Fügen Sie Pooling=False; zur Verbindungszeichenfolge hinzu und überprüfen Sie, ob dadurch das Problem mit wiederholten Verbindungen beim Neustart der Anwendung behoben wird.

    
Y.B. 01.05.2017, 20:25
quelle
0

Dieses Problem hat mich weiterhin geplagt und es scheint, dass es eine Funktion der Verzögerung von meinem Heimnetzwerk war (ich bin ein Remote-Entwickler) und das Arbeitsnetzwerk, auf das über ein VPN zugegriffen wurde. Ich habe eine durchschnittliche Ping-Zeit von 100ms für Server im Arbeitsnetzwerk.

Die wahre Kuriosität ist, dass die Verbindungszeichenfolge monatelang problemlos funktionierte und dann plötzlich gestoppt wurde. Zu der Zeit war der Name des Anwendungsnamens etwa wie Anwendungsname="MyProgram.DAL. Culture = en, PublicKeyToken = 1a1a1a1a1a1a1a1a, Version = 1.0.0.0". Mit anderen Worten ein vollständig qualifizierter Assemblyname. Irgendwann habe ich das auf den verkürzten Namen "MyProgram.DAL" geändert und es hat wieder funktioniert.

Einige Monate später hatte ich wieder Probleme damit. Und ich fand zufällig, dass, wenn ich nur die Ausnahme aß und ein paar Ticks wartete, alles in Ordnung war. Die Anwendung würde die Verbindung gerne verwenden, obwohl sie gemeldet hat, dass sie fehlgeschlagen ist. Daher habe ich die Methode wie folgt geändert:

%Vor%     
CodeWarrior 16.10.2017 18:19
quelle