Почему добавление httpRuntime targetFramework в файл Web.config в приложении WCF решает проблему подключения, связанную с TLS? - PullRequest
0 голосов
/ 18 сентября 2018

У нас есть несколько приложений ASP.NET и WCF, которые постоянно обновляются до последней версии .net Framework по мере выпуска.Эта миграция работала нормально, пока мы не достигли .NET Framework 4.6.2, и с тех пор мы начали видеть ошибку подключения TLS, как показано ниже.Когда я добавил <httpRuntime targetFramework="4.6.2" /> в <system.web> в файле Web.config, ошибка исчезла.Итак, насколько я понимаю, этот параметр заставляет приложение работать в .NET Framework 4.6.2 (без этого я считаю, что приложение работало в .NET Framework 4.0), что заставляет его использовать протокол по умолчанию для обеспечения безопасности базовой операционной системы.связь.Пожалуйста, исправьте мое понимание, если я что-то упустил.

System.AggregateException: произошла одна или несколько ошибок.---> System.Net.Http.HttpRequestException: при отправке запроса произошла ошибка.---> System.Net.WebException: основное соединение было закрыто: при отправке произошла непредвиденная ошибка.---> System.IO.IOException: невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом.---> System.Net.Sockets.SocketException: существующее соединение было принудительно закрыто удаленным хостом в System.Net.Sockets.Socket.EndReceive (IAsyncResult asyncResult) в System.Net.Sockets.NetworkStream.EndRead (IAsyncResult asyncResult)--- Конец внутренней трассировки стека исключений --- в System.Net.TlsStream.EndWrite (IAsyncResult asyncResult) в System.Net.ConnectStream.WriteHeadersCallback (IAsyncResult ar) --- Конец внутренней трассировки стека исключений --- в System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) в System.Net.Http.HttpClientHandler.GetResponseCallback (IAsyncResult ar) --- Конец внутренней трассировки стека исключений ---

1 Ответ

0 голосов
/ 29 октября 2018

Посмотрите на это: https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support. TLS 1.2 по умолчанию для .NET 4.6 и выше, поддерживается, но не по умолчанию для 4.5 и не очень хорошо поддерживается для 4.0 и ниже.

Возможно, либо одиниз ваших обновлений приложений изменение конфигурации IIS или ОС отключило версии TLS <1.2, и клиентские приложения не смогли подключиться. </p>

Что касается настройки <httpRuntime targetFramework="4.6.2" />, мы обнаружили то же самое.Изменение целевого фреймворка в файле проекта и значения targetFramework в элементе compilation было недостаточно.Он все еще сохранял поведение <.NET 4.6 для TLSФактически при изменении целевой платформы Visual Studio добавила элемент <code>httpRuntime в файл web.config в закомментированном блоке.

(Рекомендуемый ответ также полезен: Что означают настройки TargetFrameworkзначит в web.config в ASP .NET MVC? )

...