problemas con HttpWebRequest

26/11/2007 - 17:22 por Juan Pablo MV | Informe spam
Buenas,

Expondre mi problema a ver si pueden ayudarme.


1. Descripción del aplicativo: Tengo un servicio windows que consulta
de una URL información XML de un proveedor de datos(un feed), este
servicio procesa la información y la almacena en una BD local.


2. El método que utiliza el servicio Windows para consultar los datos
del URL es el siguiente:


public XmlDocument GetXMLHttp(string strURL)
{
//WebRequest request = WebRequest.Create(strURL);
HttpWebRequest request (HttpWebRequest)WebRequest.Create(strURL);;
request.Timeout = 10000; // 10 secs
request.Method = "POST";
XmlDocument rssDoc = new XmlDocument();
WebResponse response = null;
try
{
request.Credentials CredentialCache.DefaultCredentials;
if (request is HttpWebRequest)
{
((HttpWebRequest)request).UserAgent = ".NET
Framework Test Client";
}
// Get the response.


-
Inicio: linea donde se genera
el error --
response = request.GetResponse();
Fin: linea donde se genera
el
error



// Get the stream containing content returned by the
server.
Stream dataStream = response.GetResponseStream();
rssDoc.Load(dataStream);
// Clean up the streams and the response.
dataStream.Close();
response.Close();
request.KeepAlive = false;


}
catch
{
if (response != null)
response.Close();
request.KeepAlive = false;


WebProxy proxyObject = new WebProxy("192.168.0.2",
8080);
proxyObject.Credentials = new
NetworkCredential("Usuario", "clave", "xxxx");
proxyObject.BypassProxyOnLocal = true;
WebRequest.DefaultWebProxy = proxyObject;
request = (HttpWebRequest)WebRequest.Create(strURL);
//Obtener respuesta de la url que se invoca
try
{
response = request.GetResponse();
//Obtener datos de la url en un objeto Stream
Stream rssStream = response.GetResponseStream();
rssDoc.Load(rssStream);
rssStream.Close();
response.Close();
request.KeepAlive = false;


}
catch(WebException e)
{
if (response != null)
response.Close();
request.KeepAlive = false;


if
(Convert.ToBoolean(Dictionary(AppDomain.CurrentDomain.BaseDirectory.ToStrin
g()
+ "\\XML\\Config.xml", "Log", "/Config/AppConfig")))
{
//enviar correo advirtiendo del error
System.IO.StreamWriter myFile = new
System.IO.StreamWriter("C:\\error\\errorLectura" +
DateTime.Now.ToString("MMddyyyy HHmmssfff") + ".txt");
myFile.WriteLine(e);
myFile.Close();
}
}
}
return rssDoc;
}


3. Bueno ahora el molesto problema: el servicio corre bien por un
tiempo, consulta los datos del URL y hace todo el resto del proceso
bien, pero al cabo de unas horas el sistema me reporta el siguiente
error del método anterior(punto 2):


System.Net.WebException: Unable to connect to the remote server >
System.Net.Sockets.SocketException: A connection attempt failed
because the connected party did not properly respond after a period
of
time, or established connection failed because connected host has
failed to respond
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot,
SocketAddress socketAddress)
at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean
connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress&
address, ConnectSocketState state, IAsyncResult asyncResult, Int32
timeout, Exception& exception)
End of inner exception stack trace
at System.Net.HttpWebRequest.GetResponse()
at MarcadorCORE.MarcadorXMLUtils.GetXMLHttp(String strURL)


4. he intentado de todo como modificar el método de tal forma en que
si falla la consulta de la información por el proxy, este haga una
autenticación etc. agradeceria enermomente cualquier comentario que
me
ayude a solucionar el problema, o si tienen algun algoritmo que haga
este tipo de proceso y funcione bien, será bien recibido.


Muchas gracias.
 

Leer las respuestas

#1 Juan Pablo MV
07/12/2007 - 21:30 | Informe spam
Muchas gracias RFOG por su tiempo, intentare esa posibilidad

Preguntas similares