Вопрос

У меня есть веб-приложение, которое опрашивает веб-службу на другом сервере.Сервер расположен в той же сети и на него ссылается внутренний IP-адрес, работающий на порту 8080.

Каждые 15 секунд отправляется запрос, на который приходит ответ в формате XML с информацией о задании.В 95% случаев это работает хорошо, однако в случайные моменты запрос к серверу имеет нулевой результат и сообщает об «ответе, принудительно закрытом удаленным хостом».

Исследуя эту проблему, другие установили KeepAlive = false.Это не решило проблему.Веб-сервер работает под управлением .NET 3.5 SP1.

Uri serverPath = new Uri(_Url);

// create the request and set the login credentials
_Req = (HttpWebRequest)WebRequest.Create(serverPath);
_Req.KeepAlive = false;
_Req.Credentials = new NetworkCredential(username, password);
_Req.Method = this._Method;

Звонок в ответ:

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
_ResponseStream = response.GetResponseStream();

Для этого используется метод GET.Я попытался изменить тайм-аут, но значение по умолчанию достаточно велико, чтобы это принять во внимание.

Другой запрос, который мы выполняем, — это POST для отправки данных на сервер, и мы также случайно сталкиваемся с той же проблемой.На это не влияют брандмауэры, и мы исключили антивирусный сканер.Любые идеи, которые помогут решить эту проблему, очень ценятся!

Это было полезно?

Решение

Вы закрываете поток ответов и удаляете сам ответ?Это наиболее частая причина «зависаний» WebRequest — существует ограничение на количество подключений, которые вы можете открыть к одному и тому же компьютеру одновременно.Со временем GC завершит соединения, но если вы правильно их расположите, это не проблема.

Другие советы

Я бы не исключал проблемы с сетью как возможную причину проблем.Выполнили ли вы проверку связи с вашим сервером, чтобы увидеть, получаете ли вы отброшенные пакеты, соответствующие тому же времени, что и ваши неудачные запросы?

Установите для свойства таймаута объекта FtpWebRequest максимальное значение. Я попробовал это с файлом размером 4 ГБ, и он работает отлично.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top