Я использую 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.
--- дополнительная информация загружается веб-клиентом один за другим, но не в одно и то же время.