как убедиться, что httpwebrequest совместим с TLS 1.2 с использованием .NET 4 - PullRequest
0 голосов
/ 04 июля 2019

У меня есть приложение, которое подключается к каналу http, и недавно я узнал, что мне нужно убедиться, что соединение поддерживает протокол TLS 1.2.У меня сложилось впечатление, что так оно и было написано с помощью .NET Framework v 4.0, но кто-то может проверить.

В других ответах здесь говорится, что будет достаточно просто обновить фреймворк до последней версии, но я также вижу другие ответы, предполагающие включение следующего утверждения:

ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
ServicePointManager.DefaultConnectionLimit = 9999;

Мой вопрос:только вставьте вышеизложенное без обновления фреймворка, этого будет достаточно.Также, где я могу вставить это в код ниже.Для обновления потребуется определенное время, и его нужно запланировать.

Вот код, используемый в настоящее время:

 If uri.Scheme = uri.UriSchemeHttps Then
                    Dim request As HttpWebRequest = DirectCast(Net.WebRequest.Create(url), HttpWebRequest)
                    request.Method = "POST"
                    request.Headers.Add("Accept-Encoding: Deflate,gzip")
                    request.ContentLength = System.Text.Encoding.UTF8.GetByteCount(data)
                    If request.ContentLength > 1000000 Then
                        Thread.Sleep(1000)
                    End If
                    request.ContentType = "application/json"
                    request.KeepAlive = False
                    request.Timeout = 300000

                    Dim usernamepassword As String = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(uname + ":" + pword))
                    request.Headers.Add("Authorization", "Basic " + usernamepassword)

                 request.Credentials = New System.Net.NetworkCredential(username, password)
                    Dim writer As Stream = request.GetRequestStream()
                    writer.Write(postBytes, 0, postBytes.Length)
                    writer.Close()



                    Using oResponse As HttpWebResponse = request.GetResponse()
                        Dim rStream As Stream = request.GetResponse().GetResponseStream
                        rStream = New GZipStream(rStream, CompressionMode.Decompress)
                        Dim reader As New StreamReader(rStream)
                        responseData = reader.ReadToEnd()
                        appLogs.constructLog(currRule & vbNewLine & " #TERM SUCCESSFULLY ADDED! " & responseData, True, False)
                        reader.Close()
                        oResponse.Close()
                    End Using

                End If
...