【问题标题】:how to set httpclient connect timeout?如何设置httpclient连接超时?
【发布时间】:2017-11-04 17:05:36
【问题描述】:

我正在努力使用 c# HttpClient 或其兄弟 (HttpClientHandler,WebRequestHandler,...) 设置连接超时。 HttpClient 中有一个 timeout 属性,但似乎是从请求开始到收到响应的超时。我想要一个方法来指定,例如,如果你在 10 秒内没有收到来自网络套接字的 ACK,那么分手并做下一个。 我看到WinHttpHandler 类中可能有类似的东西,但它似乎已被删除或在最近的版本中不可用。比较第一个链接和第二个链接:

1.WinHttpHandler MSDN

2.WinHttpHandler Microsoft Docs

我真的需要这个,因为我必须尽快区分具有工作网络服务器(可能很慢)的 IP 与根本没有网络服务器的 IP。

【问题讨论】:

  • 您是否尝试过使用 TcpClientSocket 并连接到 IP:Port (因为您说 Web 服务器 不是网站)
  • 我将以最低的开销完成我的任务。我不会等待一段时间等待网络服务器或网站,如果没问题,然后发送一些请求并等待一段时间。必须有办法做到这一点。我不知道这个 httpclient 类是谁写的,但我认为他没有考虑开发人员的小重要要求@L.B. Apache(java)中的HttpClient有这个属性!
  • @Darrel Miller 我认为这个伟大的家伙在 HttpClient 的幕后工作。但不知道他为什么不这样设计
  • 但是你还没有回答我的问题
  • @L.B 不,我没试过。你说的对。我可以这样做,但这不是我的解决方案,因为我每秒发出数百个请求,而这种方法会以某种方式使其翻倍。

标签: c# timeout httpclient


【解决方案1】:

我在我的项目中使用HttpWebRequest.Timeout 在建立tcp 连接之前判断连接时间。并使用HttpWebRequest.ReadOrWriteTimeout 来判断整个响应超时。 ps:HttpClient好像删掉了一些有用的属性。

【讨论】:

    猜你喜欢
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    相关资源
    最近更新 更多