Почему действительно блокируется HttpWebRequest GetResponse в течение такого долгого времени?

Попробуйте это вместо этого

if ( (expiryDate - DateTime.Now ).TotalDays < 30 ) { 
  matchFound = true;
}
5
задан Omar Shahine 13 September 2009 в 16:20
поделиться

2 ответа

Если сервер действительно занимает много времени, чтобы вернуть какие-либо данные (как показано в Fiddler), то это причина. Загрузка вложения размером 85 МБ займет много времени, а затем серверу придется его обработать. Вы ничего не можете с этим поделать - кроме использования асинхронного метода, если вы можете продолжить работу до возврата вызова.

Это не полностью ясно, что Fiddler показывает вам хотя - показывает ли он задолго до того, как сервер отправит ответ? Если так, то вы мало что можете сделать. Я удивлен, что связь с вами закрывается, правда. Однако если вы не видите, что ваши данные записываются на сервер в течение некоторого времени, это другое дело.

Утилизируете ли вы возвращенный ответ? В противном случае у вас могут быть связи, которые поддерживаются. Это не должно быть проблемой, если это явно HTTP 1.0, но это наиболее частая причина "зависания" веб-вызовов, по моему опыту.

В основном, если вы не избавляете от ] WebResponse обычно (по крайней мере, с HTTP 1.1 и keepalive) удерживает соединение. Существует ограничение на количество подключений, которые могут быть открыты для одного хоста, поэтому вы можете дождаться завершения предыдущего ответа, прежде чем можно будет продолжить следующий.

Если это - это , проблема ответом является простой оператор с использованием :

using (WebResponse response = request.GetResponse())
{
    ...
}
6
ответ дан 14 December 2019 в 13:42
поделиться

Да, время отклика может быть намного больше, чем просто время загрузки. После того, как запрос был отправлен на сервер, он должен быть обработан и должен быть возвращен. Может пройти некоторое время, прежде чем запрос будет обработан, а затем файл обычно будет где-то сохранен. После этого сервер создаст страницу ответа, которая будет отправлена ​​обратно.

IIS обрабатывает только один запрос за раз от каждого пользователя,

0
ответ дан 14 December 2019 в 13:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: