Возникла ошибка "System.Net.Sockets.SocketException: соединение отказано" в Linux с.Net Core 2.2

Я столкнулся с проблемой Linux OS с .Net Core 2.2при выполнении некоторых интеграционных тестов. Вот трассировка стека:

Failed mytest () Сообщение об ошибке: System.Net.WebException: ошибка после 5 повторных попыток ----> System.Net.WebException: соединение отклонено. Соединение отклонено ----> System.Net.Http.HttpRequestException: соединение отклонено ----> System.Net.Sockets.SocketException: соединение отклонено. Трассировка стека: WebApiClient.cs: строка 56
WebApiClient.cs: строка 34 в PdsWebAppTests.ClientForTestPdsWebApp.Call(метод метода, строковый URL, заголовок String requestContent, WebClientHeaders) в ClientForTestPdsWebApp.cs: строка 19 в IntegrationTests.IntegrationTests1.mytest() in IntegrationTests.cs:line 44 --WebException at System.Net.HttpWebRequest.GetResponse() at WebApiClient.GetResponse(WebRequest webRequest) in WebApiClient.cs:line 117 at WebApiClient.ReceiveResponse(WebRequest webRequest) in WebApiClient.cs:line 97 CallWithRetries(Method method, String uriString, String requestContent, WebClientHeaders headers, Int32 retryCount) in WebApiClient.cs:line 46 --HttpRequestException at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask1.get_Result () в System.Net.Http.HttpConnectionPool.CreateConnectionAsync(запрос HttpRequestMessage, CancellationToken cancellationToken) в System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask1 создание задания) в System.Threading.Tasks.ValueTask1.get_Result()
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task
1 sendTask, запрос HttpRequestMessage, CancellationTokenSource cts, Boolean disposeCts) в System.Net.HttpWebRequest.SendRequest() в System.Net.HttpWebRequest.GetResponse() - Исключение Socket в System.Net.Http.Connect.AsteConnect.Con порт, отмена взята аннулирование взята)

Вот мой поток кода высокого уровня:

public Response Call(Method method, string uriString, WebClientHeaders headers, string requestContent)
{
    var response = CallWithRetries(method, uriString, requestContent, headers, NumberOfTimesToRetry); //WebApiClient.cs:line 34
    return response;
}

private Response CallWithRetries(Method method, string uriString, string requestContent, WebClientHeaders headers, int retryCount)
{
    var lastException = new WebException();
    for (var retriesLeft = retryCount; retriesLeft > 0; --retriesLeft)
    {
        try
        {
            var webRequest = CreateRequest(method, uriString, requestContent, headers);
            var response = ReceiveResponse(webRequest);
            return response;
        }
        catch (WebException e)
        {
            lastException = e;
        }
        Thread.Sleep(RetryBackoffPeriod);
    }
    throw new WebException($"Failed after {retryCount} retries", lastException);
}

private Response ReceiveResponse(WebRequest webRequest)
{
    var json = "no json returned :-(";
    var webResponse = GetResponse(webRequest); //at WebApiClient.ReceiveResponse(WebRequest webRequest) in WebApiClient.cs:line 97
    if (webResponse == null) return null;
    using (webResponse)
    {
        var responseStream = webResponse.GetResponseStream();
        if (responseStream != null)
        {
            using (var y = new StreamReader(responseStream))
            {
                json = y.ReadToEnd();
            }
        }
        return new Response(((HttpWebResponse)webResponse).StatusCode, json);
    }
}

PS Этот тестовый пример хорошо работает в Windows. Также с Linux-машины я могу запустить свое веб-приложение и выполнить все операции, так что я думаю, что это просто WebRequest.GetResponse() который бросает исключение.

0 ответов

Другие вопросы по тегам