在 Asp.Net Core 中的 HttpWebRequest 上获取"The operation has timed out"消息



我正在尝试向网页发出请求,并得到一个错误"该操作已超时"。我试过重写默认超时,但没有运气。事实上,相同的url在浏览器中工作得很好,我的代码对其他域工作得很好,这表明也许我缺少标题或其他东西?谁能建议在请求中添加什么来解决超时问题?

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.mrporter.com/en-gb");
request.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36");
var wresp = (HttpWebResponse)request.GetResponse();
  1. 响应数据的大小是多少,如果太大,可能会超时异常

  2. 端点的运行状况是什么。当您尝试从命令提示控制台

    ping时,是否发现任何请求超时问题?
  3. 增加请求超时值

    请求。TimeOut =3600;//毫秒值

也许您没有遵循被返回的重定向?将此属性设置为true将指示web请求这样做,HttpWebRequest.AllowAutoRedirect。我做了以下检查。

在Linux命令提示符下尝试了这个(http类似于curl,但我更喜欢它)

http --verbose --follow --timeout 3600 GET 'https://www.mrporter.com/en-gb'

详细选项提供了请求和响应?http命令将此作为请求发送:

GET /en-gb HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: www.mrporter.com
User-Agent: HTTPie/1.0.3

主机的初始响应包括(以及许多其他内容):

HTTP/1.1 301 Moved Permanently
Connection: keep-alive
Content-Length: 0
Date: Tue, 23 Feb 2021 14:09:22 GMT
Location: /en-gb/

http命令然后像这样跟随重定向(同样,为了使事情更容易,省略了细节):

GET /en-gb/ HTTP/1.1
Accept: */*

它返回屏幕fine

相关内容

  • 没有找到相关文章

最新更新