SecurityProtocolType.Tls12 не разрешает основное соединение было закрыто, произошла непредвиденная ошибка при отправке. (C#) - PullRequest
0 голосов
/ 27 февраля 2020

Я развернул веб-службу WCF в IIS (https, TLS1.2) в прошлом году, 2019, и клиентский код реализовал SecurityProtocolType.Tls12, и он успешно подключился к URL-адресу веб-службы и начал работать отлично.

В этом году я столкнулся с проблемой, сказав

, что основное соединение было закрыто. При отправке произошла непредвиденная ошибка.

Я проверил SSL-сертификат URL-адреса веб-службы, если он все еще находится на TLS1.2, и он есть.

Код клиента для проверки соединения показан ниже:

    public bool TestConnection(string url)
    {
        try
        {
            var myRequest = (HttpWebRequest)WebRequest.Create(url);
            myRequest.Timeout = Timeout.Infinite;
            myRequest.ReadWriteTimeout = 30000;
            myRequest.KeepAlive = true;
            myRequest.ServicePoint.Expect100Continue = false;

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            myRequest.ServerCertificateValidationCallback = (s, cert, chain, ssl) => true;

            var response = (HttpWebResponse)myRequest.GetResponse();

            if (response.StatusCode == HttpStatusCode.OK)
            {
                return true;
            }
            else
            {
                //well, at least it returned...
                return false;
            }
        }
        catch (Exception ex)
        {
            return false;
        }
    }

1 Ответ

0 голосов
/ 28 февраля 2020

Я думаю, что наиболее вероятной причиной является истечение срока действия сертификата, если служба WCF и клиентская часть ранее работали должным образом.
Используете ли вы самозаверяющий сертификат для безопасности транспортного уровня? Также постарайтесь не указывать версию TLS для связи.

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

Прежде чем мы снова вызовем удаленную службу, я предлагаю вам перейти к URL-адресу службы с помощью браузера и проверить наличие ошибок сертификата. Сообщение об ошибке, отображаемое браузером, должно помочь вам устранить причину ошибки.
Не стесняйтесь сообщить мне, если проблема все еще существует.

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