Получение «Исключение запроса: не удалось создать безопасный канал SSL / TLS» при проверке URL - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь проверить URL-адрес в C# коде и сталкиваюсь с ошибкой на Windows сервере 2012R2 серверном компьютере

Запрос был прерван: не удалось создать безопасный канал SSL / TLS

Я проверил несколько решений, найденных / полученных с помощью различных сообщений в net, и ничего не помогло.

C# код

public static bool isBrokenLink(string url, string KBid)
{
    Boolean isBrokenLink = false;
    try
    {
        ServicePointManager.Expect100Continue = true;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(url);
        webRequest.CookieContainer = new CookieContainer();
        webRequest.AllowAutoRedirect = false;
        webRequest.Timeout = 40000;
        using (HttpWebResponse httpresponse = (HttpWebResponse)webRequest.GetResponse())
        {
            if (httpresponse.StatusCode == HttpStatusCode.OK)
            {
                isBrokenLink = false;
            }
            else if (httpresponse.StatusCode >= HttpStatusCode.Ambiguous && httpresponse.StatusCode <= HttpStatusCode.RedirectKeepVerb)
            {
                isBrokenLink = false;
            }
            else
            {

                isBrokenLink = true;
            }
        }
    }
    catch (Exception ex)
    {

        isBrokenLink = true;

    }
    return isBrokenLink;

}

На машине я установил браузер IE и Chrome. Когда я пытаюсь загрузить URL-адрес в браузере IE 11, я получаю ту же ошибку.

При попытке проверить браузер chrome по URL-адресу, он работает нормально. Я также попытался установить браузер по умолчанию как chrome на моем компьютере и проверил. Но все та же проблема. Кто-нибудь знает об этой проблеме?

Можем ли мы изменить код для рассмотрения браузера chrome для проверки HttpWebResponse?

1 Ответ

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

Причин такого рода ошибок может быть много, и предоставленных сведений недостаточно. Типичные проблемы связаны с проверкой сертификатов, или с версиями TLS, или с поддерживаемыми шифрами и т. Д. c.

В целом: ваш код C# и IE используют тот же стек TLS, встроенный в Windows, а Chrome поставляется со своим собственным стеком TLS (BoringSSL). Установка Chrome в качестве браузера по умолчанию не будет магически заменять стек TLS операционной системы, т. Е. Он все еще будет использоваться только Chrome, а не вашей C# программой.

Если URL-адрес опубликован c, вы можете используйте SSLLabs для получения дополнительной информации об этом сайте, которая также отображает типичные проблемы и совместимость с различными типами клиентов. Это может помочь вам сузить проблему самостоятельно.

...