关于HttpWebRequest的响应速度问题

J_star 2013-05-06 12:53:54
用HFS搭建了简易FTP服务器,主要是通过网页来访问。

现想实现个简单的用于判断网页是否正常打开(或者是用来判断是否开服)的功能,写了一个方法。


private void checkServer(string ip,out bool result)
{

try
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://" + ip);

//当服务器无响应时,此处易引发异常
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Close();
result = true;
}
catch (WebException ev)
{
result = false;
}
catch (Exception ev)
{
result = false;
MessageBox.Show("程序错误");
}


}


发现每次没开服,也就是网页无响应时,在异常引发处,会卡好久,这是什么原因呢?求更好的判断方法。。百度了好多都没找到理想的,特来求助
...全文
463 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
熊猫无敌 2013-05-09
  • 打赏
  • 举报
回复
引用 5 楼 J_star 的回复:
4楼的方法似乎有缓解效果。 主要是点了check后,就会卡住整个程序,虽然只是一会,囧。
今天看到了关于这个的处理方法,回个帖 别人不改参数,用异步方法调用才是王道……

AsyncManager.OutstandingOperations.Increment();
WebRequest req = WebRequest.Create("http://www.asp.net");
req.BeginGetResponse((IAsyncResult ias) => {
WebResponse resp = req.EndGetResponse(ias);
string content = new StreamReader(resp.GetResponseStream()).ReadToEnd();
AsyncManager.Parameters["html"] = content;
AsyncManager.OutstandingOperations.Decrement();
}, null);
J_star 2013-05-06
  • 打赏
  • 举报
回复
4楼的方法似乎有缓解效果。


主要是点了check后,就会卡住整个程序,虽然只是一会,囧。
yqb_last 2013-05-06
  • 打赏
  • 举报
回复
添加 ServicePointManager.DefaultConnectionLimit = 120;
J_star 2013-05-06
  • 打赏
  • 举报
回复
引用 2 楼 soladyk 的回复:
试试HttpWebRequest的Timeout 设小点
设置到100还是会卡顿,再小就收不到回应了,囧
熊猫无敌 2013-05-06
  • 打赏
  • 举报
回复
试试HttpWebRequest的Timeout 设小点
犇犇熊 2013-05-06
  • 打赏
  • 举报
回复
不是特别清楚,坐等高人解答

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧