C# httpclient-upable для записи данных в транспортное соединение: существующее соединение было насильственно закрыто удаC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 C# httpclient-upable для записи данных в транспортное соединение: существующее соединение было насильственно закрыто уда

Сообщение Anonymous »

У меня есть этот тестовый код: < /p>

Код: Выделить всё

    try
{
ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
Console.WriteLine($"Started");

HttpClient cl = new HttpClient();
cl.DefaultRequestHeaders.Add("Connection", "keep-alive");
var response = cl.GetStringAsync("https://google.com").Result;
Console.WriteLine(response);

// ParsersV2();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.Read();
и эта ошибка

Запущено
System.AggregateException: произошла одна или несколько ошибок. (Произошла ошибка при отправке запроса.)
---> System.Net.Http.HttpRequestException: произошла ошибка при отправке запроса.
---> System.IO.IOException: невозможно выполнить записать данные в транспортное соединение: существующее соединение было принудительно закрыто удаленным хостом..
---> System.Net.Sockets.SocketException (10054): существующее соединение было принудительно закрыто удаленным хостом.
в System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.CreateException(ошибка SocketError, Boolean forAsyncThrow)
в System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.SendAsyncForNetworkStream(Socketocket, CancellationToken cancelToken )
в System.Net.Sockets.Socket.SendAsyncForNetworkStream(ReadOnlyMemory

Код: Выделить всё

1 buffer, SocketFlags socketFlags, CancellationToken cancellationToken) at System.Net.Sockets.NetworkStream.WriteAsync(ReadOnlyMemory< /code> 1 буфер, CancellationToken CancellationToken)
at system.net.http.httpconnection.writetoStreamasync (readonlymemory1 source, Boolean async) at System.Net.Http.HttpConnection.FlushAsync(Boolean async) at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine&  stateMachine) at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1.AsyncStateMachineBox

Код: Выделить всё

1.ExecutionContextCallback(Object s) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1.AsyncStateMachineBox

Код: Выделить всё

1.MoveNext(Thread threadPoolThread) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1.AsyncStateMachineBox

Код: Выделить всё

1.MoveNext() at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining) at System.Threading.Tasks.Task.RunContinuations(Object continuationObject) at System.Threading.Tasks.Task< /code> 1.trysetresult (результат Tresult)
at system.runtime.compilerservices.asynctaskmethodbuilder1.SetExistingTaskResult(Task< /code> 1 задача, результат Tresult)
at system.threading.tasks.taskcompletionionsourcewithcancellation1.WaitWithCancellationAsync(CancellationToken cancellationToken) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1.AsyncStateMachineBox

Код: Выделить всё

1.ExecutionContextCallback(Object s) at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1.AsyncStateMachineBox

Код: Выделить всё

1.MoveNext(Thread threadPoolThread) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder< /code> 1.AsyncStateMachinebox`1.executeFromThReadPool (ThreadPoolThread)
at System.Threading.Threadpoolworkeaue.dispatch ()
at System.Threading.portableThreadpool.workerThread.workerThreadStart ()
- -Конец трассировки стека из предыдущего местоположения --- < /p>
--- Конец внутреннего стека исключений трассировки --- at
System.net.http.httpconnection.sendasync ( Httprequestmessage,
boolean async, decellationtoken cancellationtoken) --- конец
inner stack stack исключения --- at
system.net.http.httpconnection.sendasync(httprequestmessage,
Boolean Async, CancellationToken CancellationTokenekeoken) AT
SYSTEM.NET.HTTP.HTTPCONNECTIONPOOL.SENDWITHVERSHIONDETECTECTIONANDRYASYNC(HTTPREQUESTMESSAGE PERSCE, BOOLEAN ASYNC, BOOLEAN DOREQUESTAUTHAUTH, CANCELLATIONTOKENTOKENTOKENTAKENTARTATIONTTRATIONTTARTATERTATERTATERTATE .Http.httpconnectionpool.estableishproxytunnelasync (boolean
async, cancellationtoken cancellationtoken) на
запрос, логический асинхро Br /> System.Threading.tasks.taskCompletionionsourceWithCancellation1.WaitWithCancellationAsync(CancellationToken cancellationToken)    at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)    at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)    at System.Net.Http.HttpClient.GetStringAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)    --- End of inner exception stack trace ---    at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)    at System.Threading.Tasks.Task
1.GetResultCore(Boolean
waitCompletionNotification) в CS10.Program.Main(String[] args) в
F:\user\source\repos\Csharp\CS10\Program.cs:line 35

У меня такая проблема только на прод сервере с Windows Server 2019. На тестовый сервер с Windows Server 2019 в той же сети.
Я пробовал использовать ServicePointManager.SecurityProtocol, ServicePointManager.ServerCertificateValidationCallback, и ничего не получилось.
В Google Chrome или Power Shell, я могу получить ответ от google.com, только мое консольное приложение не работает.
Я использую .net 8.
Возможно, кто-нибудь сможет мне помочь. Я понятия не имею, что нужно искать еще. Я протестировал этот код еще на 4 серверах с Windows 2008, Ubuntu, и он работает, но работает не только на prod.

Подробнее здесь: https://stackoverflow.com/questions/793 ... n-existing
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»