Pregunta

Tengo una aplicación web que está sondeando un servicio web en otro servidor. El servidor está ubicado en la misma red, y es referenciado por una IP interna que se ejecuta en el puerto 8080.

Cada 15 segundos, se envía una solicitud, que recibe una respuesta xml con información del trabajo. El 95% de las veces, esto funciona bien, sin embargo, en momentos aleatorios, la solicitud al servidor es nula e informa una "respuesta cerrada por la fuerza por el host remoto".

Al investigar este problema, otros han establecido KeepAlive = false. Esto no ha resuelto el problema. El servidor web ejecuta .NET 3.5 SP1.

Uri serverPath = new Uri(_Url);

// create the request and set the login credentials
_Req = (HttpWebRequest)WebRequest.Create(serverPath);
_Req.KeepAlive = false;
_Req.Credentials = new NetworkCredential(username, password);
_Req.Method = this._Method;

Llamada a la respuesta:

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
_ResponseStream = response.GetResponseStream();

El método para esto es GET. Intenté cambiar el tiempo de espera, pero el valor predeterminado es lo suficientemente grande como para tener esto en cuenta.

La otra solicitud que realizamos es una POST para publicar datos en el servidor, y también recibimos el mismo problema al azar. No hay cortafuegos que afecten esto, y descartamos el antivirus. ¡Cualquier idea para ayudar a resolver esto es muy apreciada!

¿Fue útil?

Solución

¿Estás cerrando el flujo de respuesta y eliminando la respuesta en sí? Esa es la causa más frecuente de " cuelga " con WebRequest: existe un límite para la cantidad de conexiones que puede abrir a la misma máquina al mismo tiempo. Eventualmente, el GC finalizará las conexiones, pero si las elimina correctamente, no es un problema.

Otros consejos

No descartaría problemas de red como una posible razón para los problemas. ¿Ha ejecutado un ping en su servidor para ver si recibe paquetes descartados que corresponden a las mismas horas que sus solicitudes fallidas?

Establecí la propiedad de tiempo de espera del objeto FtpWebRequest al máximo. Lo probé con 4 GB File y está funcionando muy bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top