Я получаю следующую ошибку при вызове веб-службы, отличной от https:
<exception>
<type>System.IO.IOException</type>
<message>Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.</message>
<source>System</source>
<stackTrace><![CDATA[ at System.Net.ConnectStream.EndRead(IAsyncResult asyncResult)
at System.Net.Http.HttpClientHandler.WebExceptionWrapperStream.EndRead(IAsyncResult asyncResult)
at System.Net.Http.StreamToStreamCopy.BufferReadCallback(IAsyncResult ar)]]></stackTrace>
<exception>
<type>System.Net.Sockets.SocketException</type>
<message>An existing connection was forcibly closed by the remote host</message>
<source>System</source>
<stackTrace><![CDATA[ at System.Net.Sockets.Socket.BeginReceive(Byte[] buffer, Int32 offset, Int32 size,
SocketFlags socketFlags, AsyncCallback callback, Object state)
at System.Net.Sockets.NetworkStream.BeginRead(Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)]]></stackTrace>
</exception>
</exception>
Строка кода, вызывающая ошибку, выглядит так:
try
{
response = await httpClient.SendAsync(request, cancellationToken).ConfigureAwait(false);
}
Люди кто может читать журналы веб-сервиса, говорят, что он отвечает успешно. Согласно моей диагностике, я получаю ошибку менее чем через секунду после отправки запроса. На основе того, что я нашел в Интернете, я добавил:
if (!httpClient.DefaultRequestHeaders.Contains("Connection"))
{
httpClient.DefaultRequestHeaders.Add("Connection", "Keep-Alive");
}
if (!httpClient.DefaultRequestHeaders.Contains("Keep-Alive"))
{
httpClient.DefaultRequestHeaders.Add("Keep-Alive", "3600");
}
Но заголовки Keep-Alive не помогли.
Спасибо