Мой сайт не работает, не работает или имеет ошибку?

StackOverflow https://stackoverflow.com/questions/607846

Вопрос

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

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

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

Решение

Это довольно легко сделать с помощью 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's Tick событие или что-то для периодической проверки.

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

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

Самое приятное в этом:

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

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

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

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

5) Вам не нужно вводить новый сервер.

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

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

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

Однако, если вы хотите создать свой собственный, я бы дал одну рекомендацию.Рассмотрите возможность использования запроса Head вместо запроса get:

Метод головы идентичен получению, за исключением того, что сервер не должен возвращать тело сообщения в ответе.Метайнформация, содержащаяся в заголовках HTTP в ответ на запрос головы, должна быть идентична информации, отправленной в ответ на запрос GET.Этот метод может быть использован для получения метаинформации о объекте, подразумеваемой запросом, без передачи самого тела сущности.Этот метод часто используется для тестирования гипертекстовых ссылок на достоверность, доступность и недавнюю модификацию. w3.org

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

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

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

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

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

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

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

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