Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2017, 10:16   #1
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию Получение файла с сервера SSL. Authentication failed because remote party has closed the transport stream

Здравствуйте. Возникла странная проблема которая никак не может разрешиться.

Есть файл расположенный в сети "https://www.finam.ru/cache/icharts/icharts.js"
Пару дней назад с помощью следующего кода он загружался на ура.

Код:
HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(WebAddress);
                try
                {
                    myHttpWebRequest.Method = "GET";
                    myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36";
                    myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
                    myHttpWebRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
                    myHttpWebRequest.Headers.Add(HttpRequestHeader.AcceptLanguage, "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
                    myHttpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate, sdch");

                    HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                    using (StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.GetEncoding(1251)))
                    {
                        aData = myStreamReader.ReadToEnd();
                    }
                    break;
                }
                catch (Exception ex)
                {
                    Response = ex.Message;
                }

А теперь при попытке загрузить вылетает с ошибкой:
Код:
{System.Net.WebException: Базовое соединение закрыто: Непредвиденная ошибка при передаче. ---> System.IO.IOException: Аутентификация не пройдена из-за закрытия транспортного потока удаленной стороной.
...

пробовал вставлять текст
Код:
myHttpWebRequest.Credentials = CredentialCache.DefaultCredentials;
CookieContainer cookies = new CookieContainer();
myHttpWebRequest.CookieContainer = cookies;
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3;

Но все безуспешно. При попытке выполнить GetResponse() сразу ошибка.
Может кто знает как побороть эту штуку?
На сервере есть сертификат может его нужно как то использовать? Но все что гугл предлагает так и не дало адекватного решения.

Через любой браузер файл грузится успешно.
Спасибо.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 04.04.2017, 10:47   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так может там не Ssl3?

Там Tls 1.2
В 4.5 надо включить как-то так:
Код:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls;
В 4.6 все само.

Если .NET 4.0, то его вроде нет. (если на компе стоит 4.5+, то можно добавить флаг самому, но непонятно почему бы тогда просто не собрать под 4.5)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 04.04.2017 в 11:36.
Alex11223 вне форума Ответить с цитированием
Старый 04.04.2017, 11:30   #3
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Неужели в 4 версии нету возможности получить??
Ведь самые древний IE и то умудряется получить. И нашел код где через WebBrowser получают без проблем.


нашел код

Код:
ServicePointManager.SecurityProtoco l = (SecurityProtocolType)3072; //TLS 1.2
ServicePointManager.SecurityProtoco l = (SecurityProtocolType)786; //TLS 1.1
Делаю так:
Код:
ServicePointManager.SecurityProtoco l = (SecurityProtocolType)768 | (SecurityProtocolType)3072;
Данные грузятся но в каком то нечитабельном виде. ((
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось Alex11223; 04.04.2017 в 11:38.
WorldMaster вне форума Ответить с цитированием
Старый 04.04.2017, 11:46   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
если на компе стоит 4.5+, то можно добавить флаг самому, но непонятно почему бы тогда просто не собрать под 4.5
↑↑↑

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
И нашел код где через WebBrowser получают без проблем
Дык это IE.

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Ведь самые древний IE и то умудряется получить.
Какие самые древние?

До вин 7 вроде нет TLS 1.2 в винде. https://blogs.msdn.microsoft.com/kau...ls-on-windows/
А если вин 7, то можно ж поставить 4.5
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.04.2017, 11:51   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Данные грузятся но в каком то нечитабельном виде
Убрать AcceptEncoding или
Код:
myHttpWebRequest.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.04.2017, 12:08   #6
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

под 4.5 студию надо переставлять. А ради одного проекта как то не тянет.


Да. Отлично. Вот эти строчки помогли.
Код:
myHttpWebRequest.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
ServicePointManager.SecurityProtocol =SecurityProtocolType.Tls| (SecurityProtocolType)768 | (SecurityProtocolType)3072;
Спасибо.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При чтении файла Warning: file_get_contents(files/..): failed to open stream: Permission denied cheburashkaRF PHP 1 17.08.2016 22:04
Получение ответа сервера cyberdev Работа с сетью в Delphi 6 04.04.2016 15:57
Реализация TCP+SSL клиент-сервера через Synapse 3D Hunter Работа с сетью в Delphi 19 06.09.2013 08:08
Connection Closed SSL RikkiTan Работа с сетью в Delphi 1 20.03.2013 14:14
Run-time error 1004: Method Range of object Global failed failed sa920 Microsoft Office Excel 8 01.07.2012 22:40