HttpClient.GetStreamAsync使连接半关闭

时间:2019-11-15 20:15:39

标签: .net tcp stream httpclient server-sent-events

我正在尝试使用System.Net.Http.HttpClient编写.NET SSE客户端。一切正常,但是如果服务器通过发送TCP FIN尝试关闭连接,则客户端将对其进行确认,但不会使用自己的FIN进行响应。从现在开始,在我的.NET代码中,读取流的调用在读取0字节后立即返回。它不会抛出异常来表明连接已按我的预期关闭。

enter image description here

如果我重新启动Web服务器,则客户端将按照我的预期运行,并抛出异常以指示连接已关闭。在这种情况下,我看到服务器和客户端都发送FIN。

enter image description here

我使用客户端不正确吗?这是HttpClient中的错误吗?

var stream = await this.HttpClient.GetStreamAsync(this.Url);
while (!cancellationToken.IsCancellationRequested) {
    var bytesRead = await stream.ReadAsync(buffer, 0, bufferSize, cancellationToken);
}

0 个答案:

没有答案