尝试获取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.1
或TLS 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 toTLS 1.0
while.NET 4.5
or higher supports up toTLS 1.2
For reference:
我会尝试了这一点,谢谢 – IsaSca
我现在掌握的“不设置到对象的实例对象引用”附加信息一个System.NullReferenceException。这发生在第36行。tboxPublicIPv4.Text = GetmyIP()。ToString – IsaSca