如果timint输出超过10秒,我希望我的http get请求失败。
我有这个:
var request = (HttpWebRequest)WebRequest.Create(myUrl);
request.Method = "GET";
request.Timeout = 1000 * 10; // 10 seconds
HttpStatusCode httpStatusCode = HttpStatusCode.ServiceUnavailable;
using (var webResponse = (HttpWebResponse)request.GetResponse())
{
httpStatusCode = webResponse.StatusCode;
}
当我在请求中放入一个错误的URL时似乎没有超时,它只是持续进行很长时间(似乎是几分钟)。
这是什么?
答案 0 :(得分:2)
如果您是在Web项目中执行此操作,请确保debug
文件中system.web/compilation
标记的Web.Config
属性设置为“false”。
如果是控制台应用程序等,请在“发布”模式下编译。
在“调试”模式下会忽略很多超时。
答案 1 :(得分:1)
您的代码可能正在对错误的URL执行DNS查找,这需要至少15秒。
的文件域名系统(DNS)查询最多可能需要15秒才能返回 或者超时。如果您的请求包含需要的主机名 分辨率,你可以将Timeout设置为小于15秒的值 在抛出WebException之前需要15秒或更长时间来指示a 你的请求超时。
您可以使用Dns.GetHostEntry执行DNS查找,但默认情况下看起来需要5秒。