매우 느린 Webresponse 트리거 타임 아웃
-
23-08-2019 - |
문제
C#에는 라우터 페이지에서 64B XML을 검색하여 인터넷 상태를 가져 오는 기능이 있습니다.
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;
}
Mozilla Firefox 3.5 & Firebug Addon을 사용하면 일반적으로 페이지를 검색하는 데 30ms가 필요하지만 500ms 한도는 여전히 자주 도달합니다. 성능을 어떻게 극적으로 향상시킬 수 있습니까?
미리 감사드립니다
해결책
웹 응답을 닫지 않습니다. 동일한 서버에 요청을 발행하고 닫지 않은 경우 저것들 응답, 그게 문제입니다.
응답을 a 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;
}
(나는 동시에 몇 가지 다른 변경을했다 ...)
제휴하지 않습니다 StackOverflow