c# - HTTPWebRequest 没有超时
问题描述
因此,我遇到的问题是,任何 GET 或 POST 请求,无论是使用 HttpWebRequest 还是 RestSharp 发出的,在使用错误代理进行请求时,在一定时间后都不会超时。我希望请求在一定时间后超时,并且在这两种情况下都应该有 100 秒的默认超时,因为 RestSharp 请求的默认超时是 HttpWebRequests 的默认超时。但这就是事情变得奇怪的地方。我的请求在 100 秒后没有超时,在将其显式设置为 5 秒后也没有超时。它只是等待响应并阻止整个程序。总结:请求无限等待响应。
我在 StackOverflow 和其他网站上做了一些研究,似乎以前没有人遇到过这个问题。我也无法使用针对类似问题的解决方案来解决它。没有给定解决方案的类似问题,您可以在这里找到C# RestSharp ignoring timeout parameter?
不同之处在于上面的用户仍然有一个可以正常工作的默认超时(这很奇怪,因为它是 21 秒)。
另一个用户使用相同的代码没有遇到问题,这也很奇怪,但可能会导致解决方案
System.Net.CookieContainer cookies = new System.Net.CookieContainer();
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://www.google.de/?hl=de");
req.Timeout = 5000;
req.ReadWriteTimeout = 5000;
req.ContinueTimeout = 5000; //
string proxy = ""; //non working proxy here
req.Proxy = new WebProxy(proxy.Split(':')[0], Convert.ToInt32(proxy.Split(':')[1]));
req.Method = "GET";
req.CookieContainer = cookies;
req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0";
req.Referer = "";
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Console.WriteLine(resp.Content);
正如我所提到的,它应该在 5 秒后超时,并且没有在 100 秒后显式设置超时,但这两种情况都没有发生。编辑:我必须补充一点,当设置为 5 毫秒等低 amont 时,如果没有非工作代理,超时工作正常。然后它抛出一个 System.Net.WebException。
解决方案
推荐阅读
- sql - 没有连接条件的 T-SQL 匹配记录 1 到 1
- azure-devops - Azure pilines - 构建 Xamarin.iOS - 未安装 iOS SDK 版本“14.0”,也未找到更新版本
- python - 如何在 Python 中使用正则表达式从文件底部读取 HTML 标记?
- node.js - 如何让这条受保护的路线正常工作?
- html - 为什么在设置背景图像时 background-image 属性需要明确指定 url()
- react-native - Xcode 12 问题:“找不到构建输入文件”- 在反应原生应用程序上构建以发布
- c# - 我需要更改此存在检查以在 User::FileName 上使用通配符
- php - 如果条件为真,则将样式添加到跨度
- google-bigquery - BigQuery 无法连接到云 SQL (MYSQL)
- mysql - Nodejs Sequelize和Passport Js,注册用户时卡在执行查询