Zum Inhalt springen
  • 0

.NET Fehlermeldung - Netzwerkproblem?


Tician

Frage

Hiho,

ich weiß ehrlich gesagt nicht ob das tatsächlich ein Programmier-Problem ist, ich denke eher nicht, weswegen ich mich hier melde.

What happened: Mein eigenes Programm (Schiebt Dateien Client-übergreifend durch die Gegend) ist gestern mit der Meldung "Die Namensbegrenzung für den Netzwerkadapter im lokalen Computer wurde überschritten." abgestürzt. Das schien einmalig zu sein udn ich habe mir nichts weiter dabei gedacht.

Zeitgleich, das wusste ich aber nicht, gab es mit einem anderen, externen Programm (Logistik-Software, ebenfalls in .NET programmiert) immer wieder Probleme das keine Dateien erstellt wurden. Heute hatte ein Supporter in die Logs gekuckt und das Programm wirft - sehr viel häufiger - dieselbe Fehlermeldung.

Was hab ich versucht: Sowohl die deutsche als auch die englisch übersetzte Fehlermeldung gesucht.

Anscheinend hat es etwas mit der Überschreitung der freien Port-Anzahl zu tun, vielleicht Zugriffe vom Server aus auf Netzwerkfreigaben wenn man den DNS-Namen statt der IP-Adresse verwendet. Jetzt weiß ich aber nicht wie ich das nachvollziehen kann, es gibt den 'netstat'-Befehl, aber der gibt mir ohne Parameter eine sehr überschaubare Anzahl aktiver Verbindungen zurück.

netstat -ano | find /c "TIME_WAIT"

liefert Ergebniss: 0. Gefunden hier: https://capens.net/content/fix-windows-error-name-limit-local-computer-network-adapter-card-was-exceeded

Ich bin mir also nicht sicher ob mir die Vergrößerung der Port-Range hier helfen würde und wie ich das Problem genauer eingrenzen kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

6 Antworten auf diese Frage

Empfohlene Beiträge

  • 0

Wenn dein Programm Daten von A nach B schiebt und dabei immer eine Verbindung (TCP?) erstellt, muss sie ja auch irgendwann wieder geschlossen werden. Wenn du sagst, dass da sehr viele aktive Verbindungen sind, kann ich mir vorstellen, dass sie nicht richtig geschlossen werden und daher aktiv bleiben und irgendwann sind die Ports aufgebraucht. Eine vergrößerung der Portrange würde dann nur vorübergehend helfen, bis diese dann auch wieder voll ist.

Wie wird dann die Verbindung aufgebaut?

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Ich hab die Port-Range jetzt um das 4-fache erhöht (ohne das mein eigenes Programm lief), aber es hat sich absolut nichts verändert, nicht einmal für eine Sekunde, das externe Programm läuft unverzögert weiter im sekundentakt auf diese Fehlermeldung.

Wie gesagt es war kein Witz dass die aktive Verbindungen die mir nur mit netstat angezeigt werden überschaubar sind, lass es grob 50 Verbindungen sien die mir da angezeigt werden.

Könnte es noch etwas sein? Der Zugriff auf eine bestimmte Freigabe vom Server aus? Aber würde mir das dann nicht auch über netstat angezeigt werden sollen? Ich bin planlos.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Naja, irgendwann macht das Betriebssystem dicke Backen.

Ich weiß nicht, wie es heute geregelt ist. Dafür kenne ich mich mit der Serveradministration nicht gut aus aber früher war die maximale Anzahl an aktiven TCP-Verbindungen begrenzt. Dann würde auch eine Erhöhung der Portrange nichts nützen, wenn die maximale Anzahl schon erreicht ist.

Es reicht auch nicht, dein Programm zu schließen, um die Verbindungen zu beenden, da sog. unmanaged Code ausgeführt wird, um die Verbindung zu erstellen. In solchen Fällen muss dann dann der TCP-Client das IDisposable-Interface implementieren und du musst dann entweder Dispose() aufrufen oder mit dem using arbeiten, damit der Speicher sauber aufgeräumt wird.

Darum meine Frage, wie die Verbindungen aufgebaut werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Es wird keine bewusst aktive Verbindung aufgebaut, wenn es tatsächlich mein Programm war dann reden wir hier von stupiden "File.Move" oder maximal "using StreamWriter". Aber als Ziel sind eben Netzlaufwerke im Format \\servername\freigabe oder \\{ip-adresse}\freigabe angegeben auf die Dateien geschoben werden.

Error: System.IO.IOException: Die Namensbegrenzung für den Netzwerkadapter im lokalen Computer wurde überschritten.

   bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   bei System.IO.__Error.WinIOError()
   bei System.IO.File.InternalMove(String sourceFileName, String destFileName, Boolean checkHost)
   bei System.IO.File.Move(String sourceFileName, String destFileName)
   bei _Rückmeldung_.Program.Main(String[] args)

Bei StreamWriter sollte das IDisposable automatisch soweit ich weiß aufgerufen werden, bei File.Move... keine Ahnung, es wäre traurig und ärgerlich wenn das tatsächlich der Fehler ist, zumal ich das Programm nicht direkt abkacheln lasse, die Fehlermeldung wird in eine Datei geschrieben und das Programm wird trotzdem mit Environment.Exit(0) beendet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 1 Stunde schrieb Tician:

Bei StreamWriter sollte das IDisposable automatisch soweit ich weiß aufgerufen werden

Nur wenn du das using drumherum verwendest.

Ansonsten kann man doch mit netstat -b sehen, welche Applikation die Verbindung aufrecht erhält. Vielleicht wirst du daraus ja schlauer, was los ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Hatte ich versucht, aber nichts abnormales feststellen können.

Ich wollte mit TCPViews aus den Sysinternals mal drauf schauen, aber dann hat der Chef schon entschieden den Server gleich neu zu starten - seitdem funktioniert es wohl erstmal wieder.

Ich hatte im externen Program noch eine schönere Fehlermeldung gefunden:

System.InvalidOperationException: Can not start HTTP communication endpoint because no ports are available

Die passt auch zu dem was ich Online gelesen habe - wenn auch nicht zu dem was ich mit netstat gesehen habe. Naja in dem Sinne wohl erstmal geklärt :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...