2016-03-20 8 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

Таким образом, я добавил, что решение моего кода:

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() 

Я пробовал:

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

Но я получаю ошибки: 'Tls12' is not a member of 'System.Net.SecurityProtocolType' и 'Tls11' is not a member of 'System.Net.SecurityProtocolType'

Я также попытался изменить реестр, чтобы окна не блокировали DHE с 512 бит и добавили ClientMinKeyBitLength с 0x00000200 (512) значением в соответствии с Но все же это терпит неудачу ... почему?

+0

Вы желая, чтобы загрузить файл является то, что это? – Codexer

+0

Я пытаюсь загрузить его в memystream (так не на диск): '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) 

РЕДАКТИРОВАТЬ ПРОЧТИТЕ *************************** *****************

Изучив это и копая немного дальше, я нашел решение. Похоже, что сайт отказался от поддержки 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

В вашем сервисе pointpointmanager вы можете попробовать это? 'ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 или SecurityProtocolType.Tls или SecurityProtocolType.Tls11 или SecurityProtocolType.Tls12' – Codexer

+0

Используя это, я получаю 2 ошибки:' 'Tls11 'не является членом' SecurityProtocolType'.' И '' Tls12 'is not член «SecurityProtocolType». «Другие, которые я уже пробовал (см. комментарий к коду в моем исходном сообщении). Что еще это может быть? – Flo