2016-03-20 57 views
2

私はこの画像をリクエストしようとしています:https://www.kamerstunt.nl/file/img/web/woning/9577323WenumWieselZwolseweg-142d_6.jpg これを読んだときに画像がなくなった場合、削除されましたが、問題のSSL証明書を引き続き表示できます。私のブラウザを使用すると、ページに移動してイメージを要求し、有効なSSL証明書を確認することができました。ASP.NET "リクエストが中止されました:SSL/TLSセキュアチャンネルを作成できませんでした"がコンフィグレーションされたservicepointmanagerでも発生します

私はここでチェック:The request was aborted: Could not create SSL/TLS secure channel

をだから私は私のコードを解決することを追加しました:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 Or SecurityProtocolType.Tls Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12 

をしかし、その後、私はエラーを取得:

Dim imgRequest As WebRequest = WebRequest.Create("https://www.kamerstunt.nl/file/img/web/woning/9577323WenumWieselZwolseweg-142d_6.jpg") 
Dim imgResponse As WebResponse 
ServicePointManager.Expect100Continue = True 
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls 
'//I also tried: ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls Or SecurityProtocolType.Ssl3 
imgResponse = imgRequest.GetResponse() 
Dim streamPhoto As Stream = imgResponse.GetResponseStream() 

は、私が試した 'Tls12' is not a member of 'System.Net.SecurityProtocolType''Tls11' is not a member of 'System.Net.SecurityProtocolType'

私はまた、ウィンドウが512ビットでDHEをブロックしないようにレジストリを変更しようとしました。ClientMinKeyBitLengthに0x00000200(512)の値を加えました。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman.

しかし、それでも失敗します...なぜですか?

+0

ファイルをダウンロードしますか? – Codexer

+0

私はそれをmemorystreamにロードしようとしています。(ディスクではないので):Dim StreamPhoto As Stream = imgResponse.GetResponseStream() – Flo

+0

更新された答えを見てください。 – Codexer

答えて

1

ここで私が使用する解決策はStream ...を返します。バイト配列を返し、そのバイト配列から新しいMemoryStreamを作成するように変更することもできます。また、渡す文字列型の代わりにそれをURLに変更することもできますが、それはあなた次第です。

Public Function GetRemoteStream(uRL As String) As MemoryStream 
    Dim webClient As New WebClient() 
    Dim imageBytes As Byte() = webClient.DownloadData(uRL) 
    Dim mem As New MemoryStream(imageBytes) 
    Return mem 
End Function 

使用例

Dim nStream As New MemoryStream 
nStream = GetRemoteStream(yoururlhere) 

EDITをお読みください*************************** ****************

これを調べてもう少し掘り下げて、解決策を見つけました。 SSL & Tls11のサポートが中止されたようです。

4.5フレームワークをターゲットにした新しいプロジェクトを開始しました。私は、使用されるこのSecurityProtocolType ...

SecurityProtocolType.Tls12 

ソリューション

変更ターゲットフレームワークへ:4.5と使用:SecurityProtocolType.Tls12。 今、あなたのプロトコルは、別のノートで

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 

...このよう

になります私はあなたのStreamので、それを得るの適切に処分を包むお勧めします。例:

Using stream As Stream = imgResponse.GetResponseStream() 
      Using ms As New MemoryStream() 
       Dim count As Integer = 0 
       Do 
        Dim buf As Byte() = New Byte(1023) {} 
        count = stream.Read(buf, 0, 1024) 
        ms.Write(buf, 0, count) 
       Loop While stream.CanRead AndAlso count > 0 
       'ms is your memory stream... as I take it you want the photo :) 
      End Using 
     End Using 

私の出力の証拠

enter image description here

+0

あなたのコードラインで 'Dim imageBytes As Byte()= webClient.DownloadData(uRL)'エラーが発生しました '要求は中止されました:SSL/TLSセキュアなチャネルを作成できませんでした。 ' – Flo

+0

servicepointmanagerでこれを試すことができますか? 'ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3またはSecurityProtocolType.TlsまたはSecurityProtocolType.Tls11またはSecurityProtocolType.Tls12' – Codexer

+0

これを使用して、2つのエラーが発生します。' 'Tls11 'は' SecurityProtocolType 'のメンバーではありません。' 'Tls12' ' 'SecurityProtocolType'のメンバーです。他の人は私が既に試したことがあります(元の記事のコードコメントを参照してください)。それ以外に何ができますか? – Flo

関連する問題