Загрузка нескольких файлов с помощью одного и того же сеанса с проверкой подлинности WebClient

У меня есть список уникальных URL-адресов, которые по существу генерируют файлы XLS, которые я хотел бы загрузить одновременно. Я пытался использовать ответ на этот пост: Загрузить несколько файлов асинхронно и дождаться их завершения, прежде чем выполнять остальную часть кода безрезультатно... Я думаю, это потому, что я пытаюсь загрузить файлы, которые все требуют та же самая CookieContainer и информация о сеансе. (Другими словами, это происходит за авторизованным/аутентифицированным сеансом).

Вот что я хочу:

  1. Загрузите каждый файл в списке, а затем обработайте его после завершения загрузки отдельного файла.
  2. Дождитесь завершения загрузки и обработки всех файлов 2.

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

Как настроить одновременную загрузку всех этих файлов после аутентифицированного сеанса?


person Ben Holland    schedule 26.07.2015    source источник
comment
Это не имеет ничего общего с асинхронностью. Существует ограничение в два одновременных HTTP-запроса на домен.   -  person Panagiotis Kanavos    schedule 27.07.2015
comment
Есть ли способ управлять этим? Является ли ответ Пауло Моргадо способом сделать это?   -  person Ben Holland    schedule 27.07.2015
comment
Да это так. Просто попробуйте   -  person Panagiotis Kanavos    schedule 27.07.2015


Ответы (1)


Существует ограничение на подключение к хосту для каждого процесса.

Попробуйте установить ServicePoint.ConnectionLimit. или ServicePointManager.DefaultConnectionLimit.

person Paulo Morgado    schedule 26.07.2015
comment
Сначала я думал, что это сработало, но оказалось, что удаленный хост отклоняет более двух подключений. Я знаю, что это не мой ServicePointManager, потому что я печатаю лимит подключения по умолчанию прямо перед запросом, и он намного выше двух. Есть ли способ сообщить удаленному хосту, что мне нужно увеличить лимит подключений? Что я делаю неправильно? - person Ben Holland; 29.07.2015
comment
Вы управляете сервером? что это за сервер? - person Paulo Morgado; 29.07.2015
comment
Я не контролирую сервер. Я просто пытаюсь загрузить сразу несколько файлов с сервера. Я не знаю, какой именно, но я знаю, что это Apache - person Ben Holland; 29.07.2015
comment
ЕСЛИ вы не контролируете сервер, вы ничего не можете сделать. Эти ограничения введены для защиты систем и обеспечения их быстрого реагирования. Хотели бы вы, например, чтобы любой, кто звонит вам, мог изменить какие-либо настройки на вашем телефоне? - person Paulo Morgado; 29.07.2015