Ответ 1
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response == null || response.StatusCode != HttpStatusCode.OK)
Я ищу лучший способ проверить, жив ли сайт из приложения С#.
Мое приложение состоит из пользовательского интерфейса Winforms, внутренней службы WCF и веб-сайта для публикации контента для пользовательского интерфейса и других пользователей. Чтобы предотвратить ситуацию, когда пользовательский интерфейс запускается и не работает должным образом из-за отсутствия службы WCF или веб-сайта, я спустил проверку запуска приложения, чтобы убедиться, что все все в порядке.
Приложение записывается в С#,.Net 3.5, Visual Studio 2008 SP1
В настоящее время я делаю веб-запрос на тестовую страницу на веб-сайте, которая будет проверять веб-сайт, а затем отображать результат.
WebRequest request = WebRequest.Create("http://localhost/myContentSite/test.aspx");
WebResponse response = request.GetResponse();
Я предполагаю, что если во время этого вызова нет исключений, то все будет хорошо, и пользовательский интерфейс может начаться.
Является ли это простейшим/правильным способом или есть какой-то другой скрытый вызов, о котором я не знаю на С# или лучший способ сделать это.
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response == null || response.StatusCode != HttpStatusCode.OK)
При использовании WebResponse убедитесь, что вы закрыли поток ответов, то есть (.close), иначе он повесил бы компьютер после некоторого повторного выполнения. Например,
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sURL);
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
// your code here
response.close();
из проекта 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);
}
Предполагая, что служба WCF и веб-сайт живут в одном и том же веб-приложении, вы можете использовать веб-сервис "Статус", который возвращает статус приложения. Вероятно, вы захотите сделать следующее:
Затем вы создаете клиент в приложении Win.Forms для WebService. Если WS не отвечает (т.е. Вы получаете какое-то исключение при вызове), веб-сайт не работает (например, "общая ошибка" ). Если WS отвечает, вы можете проанализировать результат и убедиться, что все работает, или если что-то сломано, верните дополнительную информацию.
Вы хотите проверить код состояния для OK (статус 200).
Решение от: Как вы проверяете, находится ли сайт на С#?
var ping = new System.Net.NetworkInformation.Ping();
var result = ping.Send( "www.google.com" );
if (result.Status!= System.Net.NetworkInformation.IPStatus.Success) возвращение;