время ожидания веб-клиента при загрузке - PullRequest
4 голосов
/ 10 февраля 2012

Я знаю, что у WebClient нет свойства timeout.Я искал и нашел разные коды, в которых вы можете унаследовать веб-клиента от httpwebrequest и установить время ожидания. Например:

   class MyWebClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest request = base.GetWebRequest(address);
        if (request is HttpWebRequest)
        {
            (request as HttpWebRequest).KeepAlive = false;
            (request as HttpWebRequest).Timeout = 25000; //(tried different values)
        }
        return request;
    }
}

Но, похоже, здесь ничего не работает.Тайм-аут наступает ровно через 100 секунд.Я пытаюсь загрузить большой файл через это клиентское приложение, которое я сделал.PHP работает на стороне сервера, и все значения timeout / maxupload установлены.

Сообщение об исключении:

the request was aborted the request was canceled

Пожалуйста, помогите мне.

Ответы [ 2 ]

3 голосов
/ 25 сентября 2012

Код в другом ответе работал для меня, я только изменил строку 9 на:

((HttpWebRequest)request).Timeout = System.Threading.Timeout.Infinite;
0 голосов
/ 10 февраля 2012

Значение по умолчанию для httpWebRequest составляет 100 секунд, поэтому в коде что-то не так.

Вы пытались установить .KeepAlive = true;

MSDN говорит, что установка в ложь может

При использовании HTTP / 1.1 Keep-Alive включен по умолчанию. Если для KeepAlive установлено значение false, это может привести к отправке на сервер заголовка Connection: Close.

Это имеет смысл, поскольку кажется, что вы правильно устанавливаете время ожидания. Вы можете дважды проверить здесь

На этот вопрос SO также есть ответ, который связывает это сообщение об ошибке со свойством keep alive.

...