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
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top