В единстве используйте WebClient.DownloadFileAsyn c и время ожидания веб-клиента при загрузке 101-го файла. - PullRequest
0 голосов
/ 07 марта 2020

Я использую webclient.DownloadFileAsyn c в единстве, чтобы загрузить много файлов. На Android, это работает найти.

Но вопрос таков: на iOS веб-клиент зависает до истечения времени ожидания при загрузке 101-го файла.

// begin download
ServicePointManager.DefaultConnectionLimit = 50;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.Expect100Continue = false;

// create one WebClient for one file
client = new WebClientWithTimeout();
client.Timeout = 10000;
// add headers, at beginning, i don't add any headers,after some search,i have try this headers,but not work
client.Headers.Add("User-Agent", "Mozilla/5.0");
client.Headers.Add("Accept", "ext/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
client.Headers.Add("Encoding", "gzip, deflate;q=0.8");
client.DownloadProgressChanged += ProgressChanged;
client.DownloadFileCompleted += DownloadCompleted;
client.DownloadFileAsync(new System.Uri(curUrl), curDownFile);


// this is the WebClientWithTimeout for set timeout
public class WebClientWithTimeout : WebClient
{
    public int Timeout { get; set; }

    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest request = (WebRequest)base.GetWebRequest(address);
        if (request is HttpWebRequest)
        {
            var httpReq = request as HttpWebRequest;
            httpReq.Proxy = null;
            httpReq.ServicePoint.Expect100Continue = false;
            httpReq.AllowAutoRedirect = true;
            httpReq.Timeout = Timeout;
        }
        return request;
    }
}

для файлового сервера, это nginx (не на локальном сети), и когда я использую файловый сервер с Caddy в локальной сети, этот вопрос не возникает. я плохо разбираюсь в серверах, думаю, может быть, я упускаю множество базовых знаний для nginx.

--- дополнительная информация загружается веб-клиентом один за другим, но не в одно и то же время.

...