Ошибка получения запроса «Не удалось создать безопасный канал SSL / TLS» - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь запросить страницу сайта у ConsoleApp:

static void Main(string[] args)
    {
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        var handler = new HttpClientHandler
        {
            AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
            ,
            AllowAutoRedirect = false
        };

        using (var client = new HttpClient(handler))
        {
            var response = client.GetAsync("https://lk.fssprus.ru/ds_cabinet/action/login");
            var httpResponseMessage = response.Result;
            var content = httpResponseMessage.Content.ReadAsStringAsync();
            Console.WriteLine(content.Result);
        }
        Console.ReadKey();
    }

и получаю эту ошибку:

System.AggregateException HResult = 0x80131500 Сообщение = Произошла одна или несколько ошибок. Source = mscorlib StackTrace: в System.Threading.Tasks.Task.ThrowIfExceptional (Boolean includeTaskCanceledExceptions) в System.Threading.Tasks.Task 1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task 1.get_Result () в ConsoleApp8.Program.Main (String []22gs) * в *: \ Projects \ FsspConnectTest \ ConsoleApp8 \ Program.cs: строка 26

Это исключение было первоначально сгенерировано в этом стеке вызовов: System. Net .HttpWebRequest.EndGetResponse (System.IAsyncResult) System. Net .Http.HttpClientHandler.GetResponseCallback (System.IAsyncResult)

Внутреннее исключение 1: HttpRequestException: при отправке запроса произошла ошибка.

Внутреннее исключение 2: WebException: запрос был прерван: не удалось создать безопасный канал SSL / TLS.

Я не могу решить эту проблему

Обновление: Я тестирую на Windows 10, и он работает отлично, но на моем Windows 8.1 не работает. Что нужно установить для Windows 8.1?

1 Ответ

0 голосов
/ 26 марта 2020

Есть две вещи -

  1. " In. NET Core, ServicePointManager влияет только на HttpWebRequest . Это не влияет на HttpClient . In. NET Framework, встроенный HttpClient построен поверх HttpWebRequest, поэтому к нему будут применяться настройки ServicePointManager. "

    Поэтому установите протокол безопасности в HttpClientHandler, чтобы вы ' переходит в конструктор HttpClient.

  2. Убедитесь, что на компьютере отключена необходимая версия TLS . Поскольку вы сказали, что он отлично работает в одном месте, но не работает в другом, а протокол TLS1.2 является протоколом по умолчанию, включенным в Windows 8.1, это может иметь место. Итак, вот как вы это делаете - Настройки реестра Transport Layer Security (TLS) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...