该请求已中止:无法创建SSL / TLS安全通道。调用PostAsJsonAsync时

时间:2018-09-17 02:11:00

标签: c# asp.net ssl http-post

我正在通过PostAsJsonAsync向第三方网站发送请求,如下所示:

testrunner.bat

引发异常:[请求已中止:无法创建SSL / TLS安全通道。] 我知道我的网站在测试环境中没有SSL证书,并且可能正在发生,因为第三方网站具有SSL证书。 我想知道有什么方法可以创建SSL通道而无需转移到SSL。

2 个答案:

答案 0 :(得分:0)

我不确定您是否异步,但这是对工作代码的一种改编,用于将JSON数据发送到SSL网站,您应该能够适应您的特定情况:

        var baseurl = "https://example.com/api/upload/123";
        var rqst = (HttpWebRequest)WebRequest.Create(baseurl);
        rqst.Method = "PUT";
        rqst.Accept = "application/json";
        var authInfo = "authtoken";
        rqst.Headers["Authorization"] = "Token  " + authInfo;
        rqst.UserAgent = "curl/7.37.0";
        rqst.ContentType = "application/json; charset=utf-8";

        using (var streamWriter = new StreamWriter(rqst.GetRequestStream()))
        {
            streamWriter.Write(GetJsonData());
        }

        try
        {
            var resp = rqst.GetResponse();
            using (var sr = new StreamReader(resp.GetResponseStream() ?? throw new InvalidOperationException()))
            {
                var txt = sr.ReadToEnd();
                textBox1.Text = txt;
            }
        }
        catch (Exception ex)
        {
            textBox1.Text = ex.Message;
        }

答案 1 :(得分:0)

我刚刚添加了

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

在PostAsJsonAsync之前,它解决了我的问题。