Muy lento WebResponse desencadenar tiempo de espera
-
23-08-2019 - |
Pregunta
Tengo una función en C # que obtiene el estado de Internet mediante la recuperación de un XML 64b desde la página del router
public bool isOn()
{
HttpWebRequest hwebRequest = (HttpWebRequest)WebRequest.Create("http://" + this.routerIp + "/top_conn.xml");
hwebRequest.Timeout = 500;
HttpWebResponse hWebResponse = (HttpWebResponse)hwebRequest.GetResponse();
XmlTextReader oXmlReader = new XmlTextReader(hWebResponse.GetResponseStream());
string value;
while (oXmlReader.Read())
{
value = oXmlReader.Value;
if (value.Trim() != ""){
return !value.Substring(value.IndexOf("=") + 1, 1).Equals("0");
}
}
return false;
}
el uso de Mozilla Firefox 3.5 y complemento Firebug Supuse que normalmente toma 30 ms para recuperar la página sin embargo, a las muy grandes 500ms limitar le sigue llegar a él a menudo. ¿Cómo puedo mejorar drásticamente el rendimiento?
Gracias de antemano
Solución
No está cerrando la respuesta Web. Si ha emitirá peticiones al mismo servidor y no se ha cerrado los las respuestas, ese es el problema.
Se adhieren la respuesta en un comunicado using
:
public bool IsOn()
{
HttpWebRequest request = (HttpWebRequest) WebRequest.Create
("http://" + this.routerIp + "/top_conn.xml");
request.Timeout = 500;
using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
using (XmlReader reader = XmlReader.Create(response.GetResponseStream()))
{
while (reader.Read())
{
string value = reader.Value;
if (value.Trim() != "")
{
return value.Substring(value.IndexOf("=") + 1, 1) != "0";
}
}
}
return false;
}
(He hecho algunas otras alteraciones al mismo tiempo ...)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow