尝试获取IPv4地址时无法在vb中创建SSL/TLS连接

尝试获取IPv4地址时无法在vb中创建SSL/TLS连接

问题描述:

我正在编写计算机科学类中的程序,并且在尝试获取计算机的公用IPv4地址时遇到错误。尝试获取IPv4地址时无法在vb中创建SSL/TLS连接

这是我的代码:

tboxPublicIPv4.Text = GetMyIP().ToString 

然而,当它试图将IPv4地址写入文本我得到这个错误:

Private Function GetMyIP() As Net.IPAddress 
    Using wc As New Net.WebClient 

     Return Net.IPAddress.Parse(Encoding.ASCII.GetString(wc.DownloadData("http://tools.feron.it/php/ip.php"))) 


    End Using 
End Function 

这是再使用此代码称为

An unhandled exception of type 'System.Net.WebException' occurred in System.dll 

Additional information: The request was aborted: Could not create SSL/TLS secure channel. 

任何帮助,将不胜感激。谢谢。

您打电话给的URL重定向到https,并且至少需要TLS 1.1

您可以通过使用ServicePointManager.SecurityProtocol设置安全协议来为Net.WebClient启用TLS 1.1TLS 1.2

此外,您可以使用DownloadString而不是将下载的数据转换为字符串。
我也将其包装在Try/Catch内。

Function GetMyIP() As Net.IPAddress 
    Using wc As New Net.WebClient 
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 

     Try 
      Return Net.IPAddress.Parse(wc.DownloadString("https://tools.feron.it/php/ip.php")) 
     Catch ex As Exception 
      Return New Net.IPAddress(0) 
     End Try 
    End Using 
End Function 

.NET 4.0 supports up to TLS 1.0 while .NET 4.5 or higher supports up to TLS 1.2
For reference:

+0

我会尝试了这一点,谢谢 – IsaSca

+0

我现在掌握的“不设置到对象的实例对象引用”附加信息一个System.NullReferenceException。这发生在第36行。tboxPublicIPv4.Text = GetmyIP()。ToString – IsaSca