Quanti siti gestite? 10, 100? Sapete sempre se i server sono in funzione o se ci sono dei problemi? Usate qualche programma esterno che vi serve per monitorare lo stato dei siti che gestite, per sapere se e quando un sito ha dei problemi ed intervenire tempestivamente?
Stanco delle solite soluzioni, prima di tutto perché mi trovo spesso a cambiare postazione di lavoro e poi perchè non mi piace installare programmi su PC non miei, avevo bisogno di qualcosa di semplice e personalizzabile, indipendente dalla postazione che mi permettesse di monitorare i miei siti web... La soluzione per me è stata semplicemente creare una pagina ASP.NET utile allo scopo!
La soluzione che viene proposta in questo articolo è semplice, facilmente espandibile, utilizza la classe System.Net e tramite una tecnica di screen scraping permette di caricare una pagina da un URL e mostrare a video se la pagina è stata ricevuta correttamente (e quindi il sito è funzionante) oppure se si sono verificati dei problemi.
File di configurazione
Innanzitutto creiamo un file XML (chiamiamolo server.xml) che contiene l'elenco dei siti o delle pagine da monitorare; ciascuna voce dell'elenco va inclusa all'interno della coppia di tag <server></server>. Aggiungiamo per ciascun tag <server> l'attributo check="yes" per indicare quali siti verificare (in questo modo è possibile escludere alcuni siti dal monitoraggio agendo semplicemente sul file XML). Ecco il risultato:
<?xml version="1.0" encoding="utf-8" ?> <root> <server check="yes">http://www.aspitalia.com</server> <server>http://www.questononlocontrollo.it</server> <server check="yes">http://falsositodiprova.xx</server> </root>
Lettura del file di configurazione
Prima di iniziare, onde evitare problemi con la compilazione, bisogna ricordarsi di referenziare questi namespace e includerli all'inizio del Code-Behind della pagina:
using System.Net; using System.Xml; using System.Text;
A questo punto inseriamo qualche riga di codice nel Page_Load per caricare i dati contenuti nel file XML in un controllo CheckListBox presente nella pagina ASPX (è l'unico controllo che ci servirà):
string myXmlFile = Server.MapPath("server.xml"); XmlTextReader myXml = new XmlTextReader(myXmlFile);
Iniziamo a leggere il file XML attraverso un oggetto XmlTextReader e aggiungiamo ogni nodo di tipo XmlNodeType.Element di nome "server" al controllo CheckListBox. Inoltre per ogni elemento con attributo check="yes" marchiamo la casella di spunta relativa.
while(myXml.Read()) { if ((myXml.NodeType == XmlNodeType.Element) && (myXml.Name == "server")) { string myCheck = myXml.GetAttribute("check"); myUrl = myXml.ReadString(); chkSite.Items.Add(new ListItem(myUrl, myUrl)); if (myCheck == "yes") chkSite.Items[chkSite.Items.Count-1].Selected = true; } } myXml.Close();
Quest'ultima istruzione (quella di chiusura) è fondamentale: omettendola, il file XML risulterebbe sempre bloccato e non saremmo in grado di modificarlo mentre l'applicazione è in esecuzione.
Attenzione: Questo articolo contiene un allegato.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.