Come verificare se il sito Web scritto in ASP.Net è ancora vivo?
-
07-07-2019 - |
Domanda
Devo scrivere una semplice app WinForms che può essere attivata per verificare se un sito Web è ancora attivo e che quel sito Web è in grado di leggere da un database.
Sto usando l'intero " (HttpWebResponse) myHttpWebRequest.GetResponse () " cosa in c # per verificare se il sito è vivo, ma non riesco a capire come ottenere una pagina di prova nel mio sito Web per scrivere qualcosa nella "Risposta" per indicare che è stato in grado di testare la propria connettività al database.
Ecco il codice di esempio per il mio lato Winforms (strappato da MSDN):
private void CheckUrl() { try { HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.google.com"); HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); myHttpWebResponse.Close(); label1.Text = myHttpWebRequest.Address.AbsoluteUri; } catch (WebException e) { label1.Text = "This program is expected to throw WebException on successful run." + "\n\nException Message :" + e.Message; if (e.Status == WebExceptionStatus.ProtocolError) { label1.Text = String.Format("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode); label2.Text =String.Format("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription); } } catch (Exception e) { label1.Text = e.Message; } }
Speravo in un aiuto sul lato webform delle cose per tornare al codice sopra.
Grazie per l'aiuto che potete fornire.
- Richard
Soluzione
Cosa succede quando il tuo sito fallisce? Restituisce un codice di stato 500 o timeout?
Un altro modo di vederlo: fa sempre qualcosa di previsto se ha successo?
Potresti chiamare un URL nella tua app web che sai restituirà un codice di 200 risposte o avrà un markup HTML previsto nella risposta se le cose funzionano bene.
Chiedi al tuo winform di chiamare questo URL ed esaminare Response.status o il testo nel buffer di output per il markup previsto. Dovresti anche creare un timeout nella tua richiesta http. Se la pagina non viene caricata entro il timeout, otterrai un'eccezione web e saprai che il sito non sta funzionando.
Inoltre, se si dispone del budget, esistono servizi di monitoraggio esterni come gomez.com che possono automatizzare questo e fornire report sulla disponibilità del sito.
Altri suggerimenti
Puoi creare un servizio web all'interno del progetto chiamato I AM ALIVE e farlo restituire un singolo carattere.
Nella tua area WinForms, consuma detto WebService e se funziona, il tuo sito è vivo.
Nell'essenza della risposta di Papuccino: puoi effettivamente creare servizi web che sono incorporati nel codice C # dietro le tue pagine WebForms contrassegnandoli con l'attributo [WebMethod]
. Quelli risiederanno all'interno dell'applicazione web, non solo sul server.
fai in modo che la tua pagina webform apra una connessione al database ed esegua qualcosa di semplice / a basso impatto, ad esempio
select SystemTableId from dbo.[SystemTable] where SystemTableId = 1
dove SystemTable è una tabella a riga singola.
Se la pagina genera un'eccezione per qualsiasi motivo, Response.Write il messaggio di eccezione, altrimenti Response.Write (" SUCCESS ") o simile.