保持活动状态并请求超时

Keep alive and request timeouts

我了解 keep-alive message 旨在防止底层 TCP 连接关闭,以便可以通过同一 TCP 连接发送多个请求。

然而,尚不清楚这对已超时的请求有何影响:

感谢您的宝贵时间和协助。

HTTP keep-alive(不要与TCP keep alive 混淆)要求服务器在HTTP 响应完全发送后不要关闭连接。因此,HTTP keep-alive 仅与发送 HTTP 响应之后和接收到下一个 HTTP 请求之前的时间有关。

... when the client times-out, how will ASP.NET know?

服务器正在尝试读取数据。如果客户端关闭连接,服务器将收到通知(如读取 0 字节)并关闭连接。

... Surely the response can no longer be sent?

重复一遍,HTTP keep-alive 仅在发送完整响应后才有意义。所以这个问题和HTTP keep-alive无关。

Since the client can send keep-alive messages, what effect, if any does it have on the request?

对当前请求没有影响。但客户端必须知道,在发送 HTTP 响应之后和服务器收到新请求之前,服务器可能会随时关闭连接。因此,服务器可能恰好在客户端尝试发送新请求的那一刻关闭连接。在这种情况下,客户端必须在新连接中重试幂等请求 (GET),而其他请求应该失败。