Я читал, что WebClient не поддерживает тайм-аут, но я нахожу что-то странное. Мой класс WebClient:
class MyWebClient : WebClient
{
private int timeout;
public int Timeout
{
get { return timeout; }
set { timeout = value; }
}
public MyWebClient()
{
timeout = 5000;
}
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request.GetType() == typeof(HttpWebRequest))
{
((HttpWebRequest)request).Timeout = timeout;
}
Console.WriteLine("timeout {0}", request.Timeout);
return request;
}
}
Когда я делаю запрос, это печатает:
Тайм-аут 10000
когда я комментирую
//((HttpWebRequest)request).Timeout = timeout;
печатает:
Тайм-аут 100000
это нормально, значение по умолчанию
но когда я установил:
((HttpWebRequest)request).Timeout = 5000;
печатает:
Тайм-аут 5000
и таймауты работают
Кто-нибудь может объяснить, почему я должен ввести значение тайм-аута напрямую?