[C#] Über Hamachi in MySql Datenbank auf vPC schreiben

04/24/2014 00:03 lama9379#1
Guten Abend,

Ich habe eine Konsolen Applikation geschrieben, um einen Account auf meinem virtuellen Server von ausserhalb zu erstellen. Dieser wird natürlich in einer DB angelegt. Mein Problem liegt jetzt darin, dass es manchmal klappt und manchmal nicht. Und ich weiss nicht woran es liegt..
Port 3306 ist offen und Fehler fallen mir auch nicht auf.
Habt ihr Tipps? Ich meine Fehler im Code können es doch nicht sein, da wie gesagt es oft so ist dass es erst 2-3 mal nicht klappt und danach auf einmal klappt. Manchmal ists aber auch so, dass es selbst nach dem 10. Mal nicht erfolgreich geht. Das ist natürlich ärgerlich...

Vorinfo: "myConnectionString" beinhaltet die Verbindungsinfos zur DB

04/24/2014 07:42 Mostey#2
Code:
goto ghi;
Code:
goto def;
Wo hast du das denn her? :rtfm:

Ich tippe mal auf offene Verbindungen, du vergisst irgendwo die Verbindung zu schließen, was dein beschriebenes Verhalten erklären könnte. Ist halt immer so ne Sache. Wenn MySqlConnection das Interface IDisposable bereitstellt, solltest du das auch nutzen. Da wird sicherlich auch ne Verbindung geschlossen, wenn eine offen war.

Code:
myCommand.Connection.Close();
Da wäre ich auch vorsichtig. Du schließt hier eine Verbindung die einem Command zugeordnet war, aber ob das automatisch auch für die normale Verbindung gilt, kann man nicht sagen. Da solltest du mal debuggen und bitte tu dir einen Gefallen: Lass goto raus und versuch dich mal an Objektorientierung.
04/24/2014 10:21 lama9379#3
Vielen dank für die Antwort. Habe folgendes geändert:

myCommand.Connection.Close();

habe ich durch:
myConnection.Close();
ersetzt.

das mit dem goto weglassen, werde ich nachher noch fixxen. Aber danke für den Tipp :)

nochmal zu dem Problem:

myCommand.Connection.Close(); wird ja erst am Ende der Write Methode verwendet. Eigentlich kann es daran ga nicht liegen, weil die Fehlermeldung, welche im Client angeziegt wird, lautet "Registration offline. Please contact a serveradmin." Und diese Ausgabe habe ich in der Methode "getnum()" als catch anweisung verwendet, falls man nichts auslesen kann.

Dein Tipp lautete ja dass es an offenen Verbindungen liegen kann. Dazu: Ich habe es gestern Abend auf einem völlig neuem PC ausgetestet, also ein PC der dieses Programm nie zu vor ausgeführt hat und gleich beim ersten mal kam diese Fehlermeldung. Normalerweise sollte das doch nicht der Fall sein? Die Testperson wählte nach Programmstart die 2 um sich zu registrieren und dann musste er warten, geschätzt 1,2 minuten und anschlissend kam die Fehlermeldung aus der getnum() Methode.

Edit: Gestern Abend hatte ich zwei tester :D Bei einem hat es beim ersten Versuch geklappt, beim anderen nicht.
04/24/2014 12:40 Mostey#4
Quote:
Originally Posted by lama9379 View Post
Die Testperson wählte nach Programmstart die 2 um sich zu registrieren und dann musste er warten, geschätzt 1,2 minuten und anschlissend kam die Fehlermeldung aus der getnum() Methode.
Klingt für mich sehr nach einem Verbindungsproblem. Hat er überhaupt ne angemessene Verbindung zu dir? Das solltet ihr erstmal testen. Ansonsten solltest du auch mal den Dienst checken, da sieht man in der Regel auch, wie es diesem so geht. Sollten da zu viele Verbindungen offen sein (kann passieren wenn du deine Verbindungen nicht schließt), war's das erstmal und du musst warten.

Hamachi stellt eigentlich ein vernünftiges Netz bereit, zumindest habe ich damals mal über CentOS testweise einen MySQL Server laufen gehabt und da hatte weder ich, noch meine Kollegen ein Problem.
04/24/2014 16:40 lama9379#5
Scheinbar liegt es wirklich an schlechter Internetverbindung, dass es manchmal klappt und manchmal nicht.

Danke für die Hilfe :)