Visual Studio 2015 System.Net.HttpWebRequest System.IO.IOException при выполнении отладки, но не через скомпилированный EXE

Новый 2019 год принес это исключение отладки в моем коде Visual Studio 2015 ниже. Единственное, что работает, — это запуск скомпилированного EXE-файла или использование Visual Studio 2010 с теми же вызовами стороннего API в Интернете. У нас установлена ​​обновленная версия Symantec Endpoint Protection, которую мы настроили по-разному, кроме воскресенья, но безрезультатно. Мой коллега удалил Symantec, и мы оба безрезультатно перезагружались несколько раз.

2019-01-03 08:56:47.3326|ERROR|...:
The underlying connection was closed: An unexpected error occurred on a send. --->
System.IO.IOException: Unable to read data from the transport connection: 
An existing connection was forcibly closed by the remote host. ---> 
System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- End of inner exception stack trace ---
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
at System.Net.TlsStream.CallProcessAuthentication(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean reserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.ConnectStream.WriteHeaders(Boolean async)

--- Конец внутренней трассировки стека исключений ---

at System.Net.HttpWebRequest.GetResponse()

person Grand Pubah    schedule 03.01.2019    source источник
comment
Присоединение к работающему EXE-файлу на данный момент обеспечивает обходной путь.   -  person Grand Pubah    schedule 03.01.2019
comment
Открытие EXE-файла изнутри VS, а затем запуск отладки не работает.   -  person Grand Pubah    schedule 04.01.2019


Ответы (1)


В тот же день, когда началась проблема, наш сторонний поставщик веб-API прекратил поддержку TLS 1.0. Насколько я понимаю, TLS, Windows 10 и Visual Studio 2015 по умолчанию будут использовать TLS 1.0. Быстрое исправление состояло в том, чтобы использовать этот код VB.NET перед первым вызовом API: ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

В долгосрочной перспективе мы устраним вызовы WebRequest для Microsoft: «Важно

Мы не рекомендуем использовать WebRequest или производные от него классы для новой разработки. Вместо этого используйте класс System.Net.Http.HttpClient».

person Grand Pubah    schedule 14.01.2019