在.NET Web请求超时 [英] Web request timeout in .NET

查看:88
本文介绍了在.NET Web请求超时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使一个Web服务请求调用一个第三方网站,谁的服务器是有点不可靠的。有没有一种方法可以让我在一个请求到该网站设置超时?事情是这样的伪code:

 尝试// 1分钟
{
    //使Web请求在这里
    使用(Web客户端的客户端新的Web客户端())//...etc。
}
抓住
{
}
 

解决方案

您可以使用的超时属性:

  VAR请求=(HttpWebRequest的)WebRequest.Create(http://www.google.com);
request.Timeout = 1000; //超时后1000毫秒
使用(VAR流= request.GetResponse()。GetResponseStream())
使用(VAR读卡器=新的StreamReader(流))
{
    Console.WriteLine(reader.ReadToEnd());
}
 


更新:

要回答有关 XElement.Load(URI)的评论部分的问题,你可以做到以下几点:

  VAR请求=(HttpWebRequest的)WebRequest.Create(http://stackoverflow.com/feeds);
request.Timeout = 1000; //超时后1000毫秒
使用(VAR流= request.GetResponse()。GetResponseStream())
使用(VAR读卡器=新的StreamReader(流))
{
    VAR XEL = XElement.Load(读卡器);
}
 

I am trying to make a web service request call to a third part web site who's server is a little unreliable. Is there a way I can set a timeout on a request to this site? Something like this pseudo code:

try // for 1 minute
{
    // Make web request here
    using (WebClient client new WebClient()) //...etc.
}
catch
{
}

解决方案

You could use the Timeout property:

var request = (HttpWebRequest)WebRequest.Create("http://www.google.com");
request.Timeout = 1000; //Timeout after 1000 ms
using (var stream = request.GetResponse().GetResponseStream())
using (var reader = new StreamReader(stream))
{
    Console.WriteLine(reader.ReadToEnd());
}


UPDATE:

To answer the question in the comment section about XElement.Load(uri) you could do the following:

var request = (HttpWebRequest)WebRequest.Create("http://stackoverflow.com/feeds");
request.Timeout = 1000; //Timeout after 1000 ms
using (var stream = request.GetResponse().GetResponseStream())
using (var reader = new StreamReader(stream))
{
    var xel = XElement.Load(reader);
}

这篇关于在.NET Web请求超时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆