Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто - PullRequest
0 голосов
/ 16 октября 2019

Я подключаюсь к сайту Skyview (https://skyview.gsfc.nasa.gov/current/cgi/basicform.pl) для получения астрономических табличек (т.е. изображений).

Я создаю URL с необходимыми параметрами и создаю запрос HttpWebRequest:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

Поскольку это https Я ранее вставил эти строки, как я видел в другой теме здесь, в SO:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

Затем я прочитал ответ сайта следующим образом:

            List<string> resp = new List<string>();

            const int BUFFER_SIZE = 1000;
            {
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    using (var responseStream = response.GetResponseStream())
                    {
                        int bytesRead;
                        do
                        {
                            var buffer = new byte[BUFFER_SIZE];
                            bytesRead = responseStream.Read(buffer, 0, BUFFER_SIZE);
                            resp.Add(Encoding.ASCII.GetString(buffer));
                        } while (bytesRead > 0);
                    }
                }
            }

После того, как сайт ответил:

  • Я анализирую результат (соответственно)
  • найти имя файла в нем
  • doеще один запрос на получение

Все отлично работает, если размер планшета не большой: сайт занимает всего несколько минут (менее 5), чтобы создать файл планшета, и я могу получить его правильно.

Когда я указываю большие поля, Skyview требуется больше времени для получения изображения и отправки мне URL-адреса файла, и примерно через 300 секунд я получаю эту ошибку:

Невозможно прочитать данные изтранспортное соединение: существующее соединение было принудительно закрыто

Если я делаю это через браузер, он работает. Я протестировал довольно большое изображение, и это заняло 21 минуту без каких-либо ошибок.

Я рассмотрел некоторые решения здесь, в SO, но, похоже, они не работают для моего случая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...