Мне нужно загрузить несколько больших файлов, поэтому мне нужно более длинное время загрузки DownloadFile(), чем 1 минута по умолчанию.C#, невозможно установить DownloadFile() timeout
Проблема в том, что мое решение не увеличивает таймаут. Он остается на 1 минуту.
Я создал этот класс:
public class MyWebClient : WebClient
{
private int timeout;
public int Timeout
{
get
{
return timeout;
}
set
{
timeout = value;
}
}
public MyWebClient()
{
this.timeout = 1200000;
}
protected override WebRequest GetWebRequest(Uri uri)
{
WebRequest w = base.GetWebRequest(uri);
w.Timeout = this.timeout;
return w;
}
}
Calling это следующим образом:
using (MyWebClient client = new MyWebClient())
{
client.Timeout = 1200000;
client.DownloadFile(new Uri(fileUrl), localFile);
}
Любые идеи?
Спасибо!
Вы уверены, что тайм-аут остается на 1 минуту? Если я выполнил это на своей машине, но изменил ее на 1 мс, я сразу же тайм-аут. ([Здесь] (http://stackoverflow.com/questions/601861/set-timeout-for-webclient-downloadfile) - это связанный с этим вопрос :, где ответ с наибольшим количеством upvotes, похоже, использует тот же подход.) – steinar
100%, я добавил временной интервал для измерения времени выполнения функции. Это всегда 1: 00-1: 01 минута – Louisa
Интересно. Возможно, это другая настройка, которая убивает соединение, т. Е. В вашей сети или машине. Можете ли вы попробовать установить его на 1 и посмотреть, закрывается ли он напрямую? Возможно, также, что класс веб-клиента использует перед выполнением команду 'min (Timeout, 1 минута)'. – steinar