Мой сайт не работает, не работает или есть ошибка? - PullRequest
1 голос
/ 03 марта 2009

Я хочу создать небольшое приложение Windows, которое будет автоматически каждый раз переходить на мой сайт и проверять, работает ли оно нормально, если оно не работает, не работает или имеет ошибку "Примеры: 404, ошибка сети, подключение к БД не удалось ", это покажет сообщение на моем экране.

Как я могу узнать, что там программно произошла ошибка при использовании любого языка .NET?

Ответы [ 8 ]

7 голосов
/ 03 марта 2009

Это довольно легко сделать с WebClient. Это будет выглядеть примерно так:

    WebClient client = new WebClient();
    try
    {
        string response =
            client.DownloadString("http://www.example.com/tester.cgi");

        // We at least got the file back from the server

        // You could optionally look at the contents of the file
        // for additional error indicators      
        if (response.Contains("ERROR: Something"))
        {
            // Handle
        }
    }
    catch (WebException ex)
    {
        // We couldn't get the file.
        // ... handle, depending on the ex
        //
        // For example, by looking at ex.Status:
        switch (ex.Status)
        {
            case WebExceptionStatus.NameResolutionFailure:
                // ...
            break;
            // ...
        }
    }

Вы можете подключить это к событию Timer Tick или к чему-то, чтобы периодически делать проверку.

5 голосов
/ 03 марта 2009

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

Хорошая вещь об этом:

1) Он проверяет ваш сайт за пределами вашего брандмауэра, поэтому он может обнаружить более широкий спектр проблем.

2) Это беспристрастная третья сторона, поэтому вы можете доказать время безотказной работы, если вам требуется SLA.

3) За небольшую надбавку вы можете попытаться диагностировать проблемы.

4) Может отображать или отправлять вам сообщения по электронной почте при возникновении проблемы.

5) Вам не нужно вводить новый сервер в эксплуатацию.

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

КСТАТИ: я проверил цены, и это составляет около $ 20 за сайт / месяц. Таким образом, вы, вероятно, могли бы заплатить за год обслуживания за меньшее время, чем потребуется для его самостоятельного создания.

3 голосов
/ 03 марта 2009

Желая выполнить ту же функциональность, я впервые заглянул в сторонние решения. Одна конкретная услуга, которая является бесплатной и достаточно точной, это MonitorUs .

Если, однако, вы хотите создать свой собственный, я бы порекомендовал одну. Попробуйте использовать запрос Head вместо запроса get:

Метод HEAD идентичен GET за исключением того, что сервер НЕ ДОЛЖЕН возвращаться тело сообщения в ответе. метаинформация, содержащаяся в HTTP заголовки в ответ на запрос HEAD ДОЛЖЕН быть идентичен информации отправлено в ответ на запрос GET. Этот метод может быть использован для получения метаинформация о сущности подразумевается запрос без передача самого тела-сущности. Этот метод часто используется для тестирования гипертекстовые ссылки для достоверности, доступность и последние модификация. w3.org

Вот ссылка на статью Питера Бромберга, в которой объясняется, как выполнить запрос Head в C #.

2 голосов
/ 03 марта 2009

Используйте объект System.Net.WebClient. Это проще в использовании, чем HttpWebRequest. У него есть метод «DownloadString», который загружает содержимое URL в строку. Этот метод также может выдавать ошибку WebException, если сервер возвращает 500. Для других ошибок вы можете проанализировать строку и найти ключевые слова.

2 голосов
/ 03 марта 2009

Используйте HttpWebRequest и оберните его в попытку для WebException. Код ошибки в объекте исключения даст вам код. 404 и т. Д. Если это 500, вы можете напечатать сообщение.

1 голос
/ 03 марта 2009

Попробуйте Adventnet's Application Manager (http://www.manageengine.com/products/applications_manager/),, он бесплатен для 5 мониторов и обеспечивает отличные возможности мониторинга

Вы можете настроить действия, которые можно выполнить в случае сбоя, такие как отправка электронной почты и т. Д.

1 голос
/ 03 марта 2009

Если вы сделаете это, создайте специальную страницу, которая выполняет любые специальные подсистемы, такие как база данных, файловый ввод-вывод и т. Д., И предоставляет результаты в виде обычного текста, а не HTML. Это позволит вам легче анализировать возвращаемые данные, а также обнаружит такие вещи, как проблемы с БД или вводом-выводом, которые могут не вызвать ошибку HTTP 404 или 500.

0 голосов
/ 03 марта 2009

Если вы предпочитаете получать электронную почту / SMS, когда ваши сайты не работают, попробуйте веб-решение *1001* Мои сайты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...