При отправке произошла непредвиденная ошибка. Ошибка соединения TLS1.1 - PullRequest
0 голосов
/ 03 июля 2018

У нас есть старый код VB на сервере, который скомпилирован и выполняет вызов веб-службы. Провайдер недавно обновил TLS1.1 до TLS1.2, и тогда код перестал работать, и мы начали получать сообщение об ошибке

Базовое соединение было закрыто: при отправке произошла непредвиденная ошибка

Я не очень знаком с VB. Есть ли какие-либо изменения, которые мы можем сделать на Windows Server , чтобы скомпилированный код устанавливал соединение через TLS1.2?

Это заняло некоторое время, но я добавил трассировку стека. Я немного отредактировал его для конфиденциальности:

Вот сообщение об ошибке:

Базовое соединение было закрыто: при отправке произошла непредвиденная ошибка.
Трассировка:
в System.Web.Services.Protocols.WebClientProtocol.GetWebResponse (запрос WebRequest)
в System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse (запрос WebRequest)
в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (String methodName, Object [] параметры)
at (...............). BeginSession (строковый профиль) в C: \ Users ... \ Desktop ................ ............. vb: строка 146
в (................) RetrieveData (Int32 queueNumber) в C: \ Users (.................... ..............). vb: строка 475
в (.................) в C: \ Users (........................ ...........) vb: строка 121

Вот часть кода, где устанавливается соединение с веб-сервисом (строка 146 в стеке выше):

<System.Web.Services.Protocols.SoapDocumentMethodAttribute("......BeginSession", RequestNamespace:="........com", ResponseNamespace:=".............com", Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)> _
Public Function BeginSession(ByVal Profile As String) As String
  Dim results() As Object = Me.Invoke("BeginSession", New Object() {Profile})
  Return CType(results(0), String)
End Function

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Моя проблема была решена. Я предпринял шаги по обновлению проекта, открыв его в последней версии Visual Studio (2017). У меня было несколько ошибок при обновлении, в основном связанных с тем, что файл решения доступен только для чтения. Затем я изменил целевую структуру проекта на 4.6.1. После внесения этих изменений и перестройки решения приложение работает.

0 голосов
/ 03 июля 2018

Добавьте это непосредственно перед запросом:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
ServicePointManager.Expect100Continue = True

Я думаю, это должно сработать.

Работало для меня, когда у меня была ошибка, хотя и немного другая.

...