Проверка доступности

Примеры проверки доступности различных ресурсов: физических серверов, программных веб-серверов, сайтов.

Доступность сервера

Доступность физического сервера можно проверить с помощью пинга.

class Program
{
    static void Main()
    {
        var host = "crmdevapp02";
        var available = ServerAvailability(host);
        Console.Write($"Server {host}: {(available ? "OK" : "Not available")}");
    }

    private static bool ServerAvailability(string host)
    {
        bool available;
        using (var pingSender = new System.Net.NetworkInformation.Ping())
        {
            try
            {
                pingSender.Send(host);
                available = true;
            }
            catch
            {
                available = false;
            }
        }
        return available;
    }
}

Доступность IIS

Доступность IIS можно проверить с помощью удаленного вызова команды iisreset с ключем /status для получения статуса веб-сервера.

class Program
{
	static void Main()
	{
		var host = "crmdevapp02";
		var available = IisAvailability(host);
		Console.Write($"IIS on {host}: {(available ? "OK" : "Not available")}");
	}

	private static bool IisAvailability(string host)
	{
		var available = false;
		var proc = new Process
		{
			StartInfo = new ProcessStartInfo("iisreset", $"{host} /status")
			{
				UseShellExecute = false,
				RedirectStandardOutput = true,
				CreateNoWindow = true
			}
		};
		proc.Start();
		while (!proc.StandardOutput.EndOfStream)
		{
			var line = proc.StandardOutput.ReadLine();
			if (line != null && line.Contains("IISADMIN"))
				available = true;
		}
		return available;
	}
}

Доступность веб-сайта

Доступность веб-сайта можно проверить, выполнив к нему веб-запрос. Статус «OK» (код 200) будет говорить о том, что сайт доступен.

class Program
{
    static void Main()
    { 
        var site = "http://crmdevapp01/DEV01";
        var available = SiteAvailability(site);
        Console.Write($"Site {site}: {(available ? "OK" : "Not available")}");
    }
    
    private static bool SiteAvailability(string uri)
    {
        bool available;
        try
        {
            var request = WebRequest.Create(uri);
            request.Credentials = CredentialCache.DefaultCredentials;
            var response = (HttpWebResponse)request.GetResponse();
            available = response.StatusCode == HttpStatusCode.OK;
        }
        catch
        {
            available = false;
        }
        return available;        
    }
}

Исходный код

About the author

Добавить комментарий

Сказать спасибо

Способ платежа:

Подписаться на обновления

Укажите свой e-mail чтобы получать уведомления о новых статьях.

Присоединиться к еще 3 подписчикам