Сегодняшняя тема уже рассматривалась здесь, но в контексте IDE Lazarus и библиотеки Synapse (все посты по тегу). Запостить этот «самособой-код» на шарпе я решил после реализации задачи с действием на основе доступности веб-проекта. Самый важный момент — код должен уметь проверять сайты по https и работать в Linux.
Использовать буду дистрибутив Ubuntu Server 20.04.6 LTS с установленным Mono. Чуть ниже расскажу как установить Mono в этот дистрибутив (на более поздние дистрибутивы установка ничем не отличается) и проводить сборку cs файлов.
Метод для проверки доступности сайта будет выглядеть вот так:
public static bool SiteAvailability(string url)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
| SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12;
WebRequest request = WebRequest.Create(url);
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response == null || response.StatusCode != HttpStatusCode.OK)
{
return false;
}
else
{
return true;
}
}
catch
{
return false;
}
}
Теперь создадим cs файл вот такого вида:
using System;
using System.Net;
namespace testsite
{
internal class Program
{
static void Main(string[] args)
{
// Переменная с адресом сайта
string url = "https://ngdream.ru";
// Условие с выводом сообщений о состоянии сайта
if (SiteAvailability(url))
{
Console.WriteLine("Сайт " + url + " доступен!");
}
else
{
Console.WriteLine("Сайт " + url + " недоступен!");
}
}
// Метод проверки доступности сайта
public static bool SiteAvailability(string url)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
| SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12;
WebRequest request = WebRequest.Create(url);
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response == null || response.StatusCode != HttpStatusCode.OK)
{
return false;
}
else
{
return true;
}
}
catch
{
return false;
}
}
}
}
Сохраним его под именем testsite.cs и забросим в директорию. Я обычно использую каталог scripts в корне диска. Можно приступать к установке пакета Mono:
sudo apt-get install mono-complete -y
Как только установка будет завершена попробуем скомпилировать testsite.cs в исполняемый файл и запустить. Команды вводим построчно, игнорируя комментарии:
# Переходим в папку с файлом testsite.cs # В моём случае - папка scripts в корне файловой системы cd /scripts # Компилируем файл cs в exe с помощью компилятора mcs mcs testsite.cs # Запускаем файл testsite.exe с помощью mono mono testsite.exe
Если всё прошло успешно — программа выдаст нам ответ.