Подтвердить что ты не робот

Проверить, жив ли сайт из приложения С#

Я ищу лучший способ проверить, жив ли сайт из приложения С#.

Фон

Мое приложение состоит из пользовательского интерфейса Winforms, внутренней службы WCF и веб-сайта для публикации контента для пользовательского интерфейса и других пользователей. Чтобы предотвратить ситуацию, когда пользовательский интерфейс запускается и не работает должным образом из-за отсутствия службы WCF или веб-сайта, я спустил проверку запуска приложения, чтобы убедиться, что все все в порядке.

Приложение записывается в С#,.Net 3.5, Visual Studio 2008 SP1

Текущее решение

В настоящее время я делаю веб-запрос на тестовую страницу на веб-сайте, которая будет проверять веб-сайт, а затем отображать результат.

WebRequest request = WebRequest.Create("http://localhost/myContentSite/test.aspx");
WebResponse response = request.GetResponse();

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

Вопрос

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

4b9b3361

Ответ 1

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response == null || response.StatusCode != HttpStatusCode.OK)

Ответ 2

При использовании WebResponse убедитесь, что вы закрыли поток ответов, то есть (.close), иначе он повесил бы компьютер после некоторого повторного выполнения. Например,

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sURL);
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
// your code here
response.close();

Ответ 3

из проекта NDiagnostics на CodePlex...

public override bool WebSiteIsAvailable(string Url)
{
  string Message = string.Empty;
  HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url);

  // Set the credentials to the current user account
  request.Credentials = System.Net.CredentialCache.DefaultCredentials;
  request.Method = "GET";

  try
  {
    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    {
      // Do nothing; we're only testing to see if we can get the response
    }
  }
  catch (WebException ex)
  {
    Message += ((Message.Length > 0) ? "\n" : "") + ex.Message;
  }

  return (Message.Length == 0);
}

Ответ 4

Предполагая, что служба WCF и веб-сайт живут в одном и том же веб-приложении, вы можете использовать веб-сервис "Статус", который возвращает статус приложения. Вероятно, вы захотите сделать следующее:

  • Проверьте, что база данных запущена и запущена (хорошая строка подключения, сервис вверх и т.д.)
  • Проверьте, работает ли сайт (как точно зависит от веб-сайта).
  • Проверьте, работает ли WCF (как точно зависит от вашей реализации)
  • Добавлен бонус: вы можете вернуть некоторую информацию о версии на услугу, если вам нужно поддерживать разные версии в будущем.

Затем вы создаете клиент в приложении Win.Forms для WebService. Если WS не отвечает (т.е. Вы получаете какое-то исключение при вызове), веб-сайт не работает (например, "общая ошибка" ). Если WS отвечает, вы можете проанализировать результат и убедиться, что все работает, или если что-то сломано, верните дополнительную информацию.

Ответ 5

Вы хотите проверить код состояния для OK (статус 200).