2017-10-16 10 views
0

コンピュータサイエンスクラスにプログラムを作成していて、コンピュータのパブリックIPv4アドレスを取得しようとしたときにエラーが発生しました。IPv4アドレスを取得しようとしたときにvbでSSL/TLS接続を作成できません

これは私のコードです:

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 

はこれが、このコードを使用して呼び出されます。

tboxPublicIPv4.Text = GetMyIP().ToString 

しかし、それは私はこのエラーを取得するテキストボックスにIPv4アドレスを書き込もうとすると:

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. 

ご協力いただければ幸いです。ありがとうございました。

答えて

1

呼び出し元のURLがhttpsにリダイレクトされており、少なくともTLS 1.1が必要です。

セキュリティプロトコルをServicePointManager.SecurityProtocolに設定すると、012.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 to TLS 1.0 while .NET 4.5 or higher supports up to TLS 1.2
For reference:

+0

私は、これを試してみるあなたに私は今、「オブジェクトのインスタンスに設定されていないオブジェクト参照」の追加情報とSystem.NullReferenceExceptionを取得しています – IsaSca

+0

に感謝します。これは行36で発生します。tboxPublicIPv4.Text = GetmyIP()。ToString – IsaSca

関連する問題