web services - servicio - "El nombre de red especificado ya no está disponible" en Httplistener
puede deberse a que el enlace del extremo de servicio no usa el protocolo http wcf (3)
Solo he recibido esta excepción en particular una vez hasta ahora cuando uso HttpListener. Ocurrió cuando reanudé la ejecución después de que mi aplicación estuvo parada en un punto de interrupción por un tiempo.
Tal vez hay algún tipo de tiempo de espera interno involucrado? Su aplicación envía datos en ráfagas, lo que significa que probablemente esté completamente inactivo la mayor parte del tiempo. ¿Ocurrió la excepción inmediatamente después de un período de inactividad?
Construí un servicio web simple que simplemente usa HttpListener para recibir y enviar solicitudes. Ocasionalmente, el servicio falla con "El nombre de red especificado ya no está disponible". Parece que se lanza cuando escribo en el búfer de salida de HttpListenerResponse.
Aquí está el error:
ListenerCallback () Error: el nombre de red especificado ya no está disponible en System.Net.HttpResponseStream.Write (Byte [] búfer, desplazamiento Int32, tamaño Int32)
y aquí está la parte culpable del código. responseString es la información que se envía de vuelta al cliente:
buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
response.ContentLength64 = buffer.Length;
output = response.OutputStream;
output.Write(buffer, 0, buffer.Length);
No parece ser siempre un gran buffer, dos ejemplos son 3,816 bytes y 142,619 bytes, estos errores se arrojaron con una diferencia de 30 segundos. No creo que mi única aplicación cliente esté sobrecargando HTTPlistener; el cliente ocasionalmente envía / recibe datos en ráfagas, con varios intercambios ocurriendo uno tras otro.
La mayoría de las búsquedas de Google muestran que este es un problema de TI común donde, cuando hay problemas de red, se muestra este error: la mayoría de la ayuda se dirige a los administradores de sistemas para diagnosticar un problema con una aplicación más que a los desarrolladores que buscan un error. Mi aplicación ha sido probada en diferentes máquinas, redes, etc. y no creo que sea simplemente un problema de configuración de red.
¿Cuál puede ser la causa de este problema?
También estoy obteniendo esto, cuando se especifica ContentLength64
y KeepAlive
es false
. Parece que el cliente está inspeccionando el encabezado Content-Length
(que, según todas las cuentas posibles, está configurado correctamente, ya que recibo una excepción con cualquier otro valor) y luego dice "Whelp I''m done KTHXBYE" y cierra la conexión. un poco antes de que la HttpListenerResponse
subyacente de HttpListenerResponse
lo esperara. Por ahora, estoy atrapando la excepción y avanzando.
El mismo problema aquí, pero otros hilos sugieren ignorar la excepción.
Puede ser que eso no es lo correcto.