Как обеспечить, чтобы исходное значение по умолчанию свойства SecurityProtocol класса ServicePointManager из класса System. Сетевое пространство имен — SecurityProtocolType.SystemDefault в решении, условия конфигурации которого описаны ниже в этом вопросе?
2. Текущее состояние
Текущее начальное значение по умолчанию свойства SecurityProtocol:
Код: Выделить всё
ServicePointManager.SecurityProtocol == Ssl3 | Tls
Первоначальное значение по умолчанию свойства SecurityProtocol должно быть:
Код: Выделить всё
ServicePointManager.SecurityProtocol == System.Default
Конфигурация решения следующая:
- (A) Исполняемый EXE-файл проект: собственное приложение C++ без поддержки CLR (поддержка Common Language Runtime: нет поддержки Common Language Runtime)
- (B) Проект DLL: библиотека C++/CLI с поддержкой для управляемого кода (поддержка общеязыковой среды выполнения: .NET Framework Runtime Support /clr), предназначенной для целевой версии .NET Framework: v4.8.
5.1
Инициализация значения свойства SecurityProtocol, вероятно, как-то связана с AppDomain.CurrentDomain. Значение SetupInformation.TargetFrameworkName.
Значение TargetFrameworkName равно null, хотя сборка (B) имеет TargetFrameworkAttribute указано значение v4.8. Домен приложения внутренне инициализируется в соответствии с результатом метода Assembly.GetEntryAssembly, который в данном случае возвращает значение null для изображения (A) (изображение не является управляемой сборкой).
5.2
Кроме того, если я явно изменю значение свойства SecurityProtocol на SecurityProtocolType.SystemDefault:
Код: Выделить всё
ServicePointManager.SecurityProtocol = SecurityProtocolType.SystemDefault;
WebException Статус: ReceiveFailure (Базовое соединение
закрыто: при получении произошла непредвиденная ошибка)
-> ArgumentException ( Указанное значение недопустимо в перечислении «SslProtocolType» Имя параметра> sslProtocolType)
Подробнее здесь: https://stackoverflow.com/questions/786 ... l-property