繁体   English   中英

在 Asp.Net Core 的 HttpWebRequest 上获取“操作已超时”消息

[英]Getting “The operation has timed out” message on HttpWebRequest in Asp.Net Core

我正在尝试向网页发出请求,并收到“操作已超时”的错误。 我尝试过没有运气覆盖默认超时。 事实上,相同的 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. 增加请求超时值

    request.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: */*

它可以很好地返回屏幕。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM