Запрос был прерван, не удалось создать безопасный канал ssl / tls для HttpWebRequest с вызовом HTTPS POST - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь выполнить POST-вызов по защищенному URL-адресу (https) с помощью HttpWebRequest, но получаю ошибку "запрос был прерван, не удалось создать безопасный канал ssl / tls" .

Я пробовал несколько способов, найденных в stackoverflow, перечисленных ниже, но ничего не работает. Нужна помощь в решении проблемы.

[OperationContract]
   public string Search(string orderId)
    {
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
        // Skip validation of SSL/TLS certificate
        ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
        string resultObject = string.Empty;
        string baseUrl = "https://example.com";
        string query = "";
        System.Net.HttpWebRequest webrequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(baseUrl);
        webrequest.Method = "POST";
        byte[] byteArray = Encoding.UTF8.GetBytes(query);
        webrequest.ContentLength = byteArray.Length;
        Stream dataStream = webrequest.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();
        webrequest.ContentType = "application/json";
        webrequest.Accept = "application/json";
        System.Net.HttpWebResponse response;
    }

Я даже попробовал ниже упомянутое -

    public class MyPolicy : ICertificatePolicy
{
    public bool CheckValidationResult(ServicePoint srvPoint,
      X509Certificate certificate, WebRequest request,
      int certificateProblem)
    {
        //Return True to force the certificate to be accepted.
        return true;
    }
}

[OperationContract]
   public string Search(string orderId)
    {
        System.Net.ServicePointManager.CertificatePolicy   = new MyPolicy();
        string resultObject = string.Empty;
        string baseUrl = "https://example.com";
        string query = "";
        System.Net.HttpWebRequest webrequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(baseUrl);
        webrequest.Method = "POST";
        byte[] byteArray = Encoding.UTF8.GetBytes(query);
        webrequest.ContentLength = byteArray.Length;
        Stream dataStream = webrequest.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();
        webrequest.ContentType = "application/json";
        webrequest.Accept = "application/json";
        System.Net.HttpWebResponse response;
    }
...