Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WebRequest.Timeout, как хаставить его работать? 
:(
    Опции темы
Kefir
Дата 9.6.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



есть программка, где надо постонно проверять наличие интернета. делаю очень просто - через WebRequest посылаю запрос на нужный сайт. Коли ответ есть - значит и интернет есть. Код:
Код

            WebRequest wRequest = WebRequest.Create(URL);
            // set request timeout to 4 seconds (4000 milliseconds)
            wRequest.Timeout = 4000;
            WebResponse wResponse;
            try
            {
                wResponse = wRequest.GetResponse();
                wResponse.Close();
                wRequest = null;
                return true;
            }
            catch
            {
                wResponse = null;
                wRequest = null;
                return false;
            }

вот. всё вроде убийственно просто и должно работать. но по непонятным причинам в одном месте с вифи интернетом оно даёт сбой и возвращает периодически false. из-за этого отменяется синхронизация БД и файлов программы с сервером. Что самое обидное - у меня такое впечатление, что он просто не ждёт Timeout и просто не успевает получить ответ. Ставил таймаут и на 40 секунд - никакой разницы. Доки читал - вроде написано что таймаут работает только если запрос синзронный - GetResponse вроде именно синхронная функция.
Так вот собственно что надо - или заставить нормально работать таймаут у запроса, или сделать как-нибудь по-другому. Предложения? Идеи?
PM MAIL WWW Skype   Вверх
Kvazilol
Дата 10.6.2007, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



http://www.codeproject.com/cs/internet/int...tion_status.asp
вроде оно?
Код

try
    {
        // Create an HTTP Web request
        // to an Uri that's always available.
        HttpWebRequest request = (HttpWebRequest) 
           HttpWebRequest.Create(this._alwaysAvailableUrl);

        // Perform GET
        HttpWebResponse response = 
           (HttpWebResponse) request.GetResponse();
        if (HttpStatusCode.OK == response.StatusCode)
        {
            // HTTP = 200, close the request and return true
            response.Close();
            e.Result = true;
        }
        else
        {
            // Other status; return false
            e.Result = false;
        }
    }
    catch (WebException)
    {
        // Deffinitely offline
        e.Result = false;
    }
}

PM MAIL   Вверх
Kefir
Дата 10.6.2007, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



а какая собственно принципиальная разница между моим кодом и тем что привёл ты? (я в танке)
PM MAIL WWW Skype   Вверх
v2v
Дата 10.6.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: нет
Всего: 56



Я так понял тебе инет нужен для синхронизации БД с сервером?
Ну так а что за сервер? ТЫ от него посылки тоже через ВебРеспонс получаешь? или как то подругому, так и проверяй наличия соединения с сервером по другому.




--------------------
PM   Вверх
Kefir
Дата 10.6.2007, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



v2v, инет нужен НЕ ТОЛЬКО для синхронизации БД. проверка должна в принципе подтверждать что сайт www.company_site.com отвечает. Всё. Проблема в том, что таймаут почему-то не пашет.
я вообще не понимаю в чём суть твоего поста - я про фому, ты про ерёму. что значит проверять по другому? ну напиши как. и какая разница какой сервер? я же говорю - надо проверять есть интернет или нет.
PM MAIL WWW Skype   Вверх
stab
Дата 10.6.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



false оно может вернуть если произошло исключение. закрадывается вопрос: а что за исключение на том компе происходит?


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Kefir
Дата 11.6.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



гм... забыл совсем... мне в общем к терминалу надо съездить и в логе глянуть для полной уверенности. как только так сразу отпишусь.
PM MAIL WWW Skype   Вверх
stab
Дата 11.6.2007, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



отпишись, мне уже самому интересно  smile 


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Kefir
Дата 11.6.2007, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



вот сижу у терминала.
исключение:

System.Net.WebException: The remote server returned an error: (404) Not Found.
   at System.Net.HttpWebRequest.GetResponse()
   at ERD.AdminForm.IsConnectionAvailable(String URL) in xxx:line yyy

скажу так - очень странно это. ибо урл всё время один и тот же. оно постоянно в онлайне. это раз. два. такая проблема только на одном терминале (интернет - вифишка - как и везде). работает инет отрадно, но, видно, что-то невпорядке. спешу заметить - сайт в оффлайн не уходит и уходить не собирается.

а теперь вопрос - мысли и соображения по этому поводу? единственное, что приходит в голову - посылать запрос не один раз, а несколько. хотя, коненчно, очень странное решение (как и сама проблема). есть ли что-нибудь покрасивее (в плане выхода из этой ситуёвины)?
PM MAIL WWW Skype   Вверх
tol05
Дата 11.6.2007, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 6
Всего: 170



вот еще здесь можешь почитать



--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
stab
Дата 12.6.2007, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



мистика. прокси может какой затесался? модификации LSP?

кстати, была когда-то давно схожая задача, и ввиду того, что интернет не надёжная система, я наличие интернета проверял по нескольким урлам последовательно. может и тебе использовать пару-тройку урлов..


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Kefir
Дата 12.6.2007, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



tol05, эмм... а в чём, собственно, фишка? я может не понял - а что там смотреть? Там (почти) точно также использован WebRequest. И написан класс MyWebRequest для обхода синхронности GetResponse. Или я чего-то там не углядел?..


cully, странно то именно то, что 404 возвращается абсолютно хаотично - такое впечатление, то функция содержит только return rand()%2  smile . То есть при синхронизации возвращает false то на 3%, то на 8%, то на 6% и т.д. Вот это мне и непонятно. То есть какое-то нестабильное поведение у неё. Насчёт разных урлов - я сначала наверное попробую делать несколько запросов на сервер (ибо мне нужен только он), если не пройдёт такой фокус, то буду делать разные урлы.

В общем, пока помечаю вопрос решённым. Проблема ясна.
Обязательно отпишусь.
PM MAIL WWW Skype   Вверх
stab
Дата 12.6.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



Kefir, из IE пробовал этот урл долбить с такой же периодичностью?


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Kefir
Дата 12.6.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



нет, не пробовал.
в общем после внедрения технологии множественного запроса (на три разных урла) всё стало работать нормально. проверяет хорошо. пока сбоев не замечено.
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.1265 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.