"Der angegebene Netzwerkname ist nicht mehr verfügbar" in Httplistener

8

Ich habe einen einfachen Webdienst aufgebaut, der einfach HttpListener verwendet, um Anfragen zu empfangen und zu senden. Gelegentlich schlägt der Dienst mit "Angegebener Netzwerkname ist nicht mehr verfügbar" fehl. Es scheint zu sein, wenn ich in den Ausgabepuffer der HttpListenerResponse schreibe.

Hier ist der Fehler:

  

ListenerCallback () Fehler: Der angegebene Netzwerkname ist nicht mehr verfügbar unter System.Net.HttpResponseStream.Write (Byte [] Puffer, Int32 Offset, Int32 Größe)

und hier ist der schuldige Teil des Codes. responseString sind die Daten, die zurück an den Client gesendet werden:

%Vor%

Es scheint nicht immer ein riesiger Puffer zu sein, zwei Beispiele sind 3.816 Bytes und 142.619 Bytes, diese Fehler wurden ungefähr 30 Sekunden auseinander geworfen. Ich würde nicht denken, dass meine einzelne Klientenanwendung HTTPlistener überladen würde; Der Client sendet / empfängt gelegentlich Daten in Bursts, wobei mehrere Austauschvorgänge nacheinander stattfinden.

Meistens zeigen Google-Suchen, dass dies ein häufiges IT-Problem ist, bei dem bei Netzwerkproblemen dieser Fehler angezeigt wird - die meiste Hilfe richtet sich an Systemadmins, die ein Problem mit einer App besser diagnostizieren als Entwickler, die einen Fehler aufspüren. Meine App wurde auf verschiedenen Computern, Netzwerken usw. getestet und ich glaube nicht, dass es sich um ein Netzwerkkonfigurationsproblem handelt.

Was könnte die Ursache für dieses Problem sein?

    
pc1oad1etter 09.01.2009, 19:48
quelle

3 Antworten

2

Ich bekomme das auch, wenn ein ContentLength64 angegeben ist und KeepAlive ist false . Es sieht so aus, als ob der Client den Header Content-Length prüft (was bei allen möglichen Accounts korrekt ist, da ich eine Exception mit einem anderen Wert erhalte) und dann "Whelp I'm done KTHXBYE" sage und die Verbindung schließt ein wenig bevor der zugrunde liegende HttpListenerResponse -Stream es erwartet hat. Fürs Erste fange ich nur die Ausnahme und mache weiter.

    
Nicholas Piasecki 04.09.2009 17:11
quelle
0

Ich habe diese spezielle Ausnahme bisher nur einmal mit HttpListener bekommen. Es passierte, als ich die Ausführung wieder aufnahm, nachdem meine Anwendung für eine Weile auf einem Haltepunkt stand.

Vielleicht gibt es eine Art interne Zeitüberschreitung? Ihre Anwendung sendet Daten in Bursts, was bedeutet, dass sie wahrscheinlich die meiste Zeit inaktiv ist. Ist die Ausnahme unmittelbar nach einem Zeitraum der Inaktivität aufgetreten?

    
Thorarin 05.06.2009 07:36
quelle
0

Gleiches Problem hier, aber andere Threads schlagen vor, die Ausnahme zu ignorieren.

C # -Problem mit HttpListener

Vielleicht ist das nicht das Richtige.

    
2ndlife 18.11.2011 07:04
quelle