Gibt es etwas im .NET MySqlClient (6.9.5.0), wo, wenn ein MySQL-Server im Server-Pool nicht antwortet (möglicherweise aufgrund von temporären Netzwerkproblemen), der Server permanent auf die schwarze Liste gesetzt oder umgangen wird? In unserer Protokollierung stellen wir fest, dass ein Authentifizierungsfehler ausgelöst wird:
%Vor%Unmittelbar nach Auftreten dieses Fehlers schlägt jeder Versuch, aus der Datenbank zu schreiben oder zu lesen, mit folgender Fehlermeldung fehl:
%Vor%Irgendwelche Ideen? Wenn der DB-Server verschoben wurde, um auf demselben Host zu sein, auf dem unsere Anwendung ausgeführt wird, tritt das Problem nicht mehr auf.
Zwei Dinge treffen mich hier:
Die Art Ihrer Ausnahme: System.IO.EndOfStreamException: Es wurde versucht, über das Ende des Streams hinaus zu lesen.
Und die Tatsache, dass, wenn sich die DB auf demselben Rechner befindet wie der Wenn Sie eine Anwendung aufrufen, tritt das Problem nicht auf.
Für mich bedeutet das, dass ein transport- oder netzwerkbezogener Fehler auftritt, der den Stream unterbricht. Sobald das auftritt, wird Ihre Verbindung zurückgesetzt, so dass nachfolgende Aufrufe an die DB fehlschlagen.
Ich würde versuchen, die EndOfStreamException abzufangen und zu versuchen, die Verbindung ordnungsgemäß zu schließen und erneut zu öffnen. Etwas wie unten. Wenn dies zulässt, dass nachfolgende Aufrufe erfolgreich sind, dann haben Sie das Problem gefunden ... Bedenken Sie jedoch, dass in dieser Struktur der ursprüngliche Aufruf (innerhalb des try-Blocks) nicht erneut aufgerufen wird. Sie müssen auch Ihre Verbindung ordnungsgemäß neu erstellen und öffnen, bevor Sie weitere Aufrufe vornehmen, da sie jetzt immer im finally-Block bereitgestellt werden.
%Vor%