2009-03-03 14 views
1

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

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

+0

Конечно, любая программа будет оставлена ​​на милость сети, в которой вы находитесь. – Terry

ответ

7

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

+0

Вы также должны использовать DownLoadStringAsync(), чтобы вы могли также установить разумный период ожидания. –

2

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

2

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

5

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

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

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

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

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

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

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

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

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

+0

Зачем беспокоиться? Вы можете получить такое же решение БЕСПЛАТНО от поставщика, такого как InternetSeer. Полагаю, что даже инструменты Google для веб-мастеров предлагают аналогичную (хотя и не такую ​​сложную) услугу. Я не вижу, что оправдывает эти 20 долларов США за сайт в месяц, когда другие взимают 0 долларов за ту же услугу. –

+1

Я взял вопрос «Я хочу создать небольшое приложение для Windows ...», чтобы он хотел узнать, как что-то сделать, а не найти бесплатную услугу, которая может выполнять услугу ... – Dscoduc

+0

@ Dscoduc, yes вы правы, я хотел, чтобы узнать, как сделать это сам, но я благодарю любого, кто помог что-нибудь, что он знает. Я узнал о новых вещах и услугах из ответов здесь, и это здорово :) –

1

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

0

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

1

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

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

3

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

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

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

Вот a link to Peter Bromberg's статья, которая объясняет, как выполнить запрос Head в C#.

Смежные вопросы