Pergunta

Eu quero criar um pequeno aplicativo do Windows irá automaticamente a cada período de tempo para o meu site e verificar se sua multa em execução, se ele encontrou-a para baixo, não funciona ou tem um erro "Exemplos: 404, erro de rede, conexão com db falhou" ele irá mostrar uma mensagem na minha tela.

Como posso saber que há um erro lá programmaticly usando qualquer linguagem .NET?

Foi útil?

Solução

É muito fácil de fazer com um WebClient. Seria algo parecido com isto:

    WebClient client = new WebClient();
    try
    {
        string response =
            client.DownloadString("http://www.example.com/tester.cgi");

        // We at least got the file back from the server

        // You could optionally look at the contents of the file
        // for additional error indicators      
        if (response.Contains("ERROR: Something"))
        {
            // Handle
        }
    }
    catch (WebException ex)
    {
        // We couldn't get the file.
        // ... handle, depending on the ex
        //
        // For example, by looking at ex.Status:
        switch (ex.Status)
        {
            case WebExceptionStatus.NameResolutionFailure:
                // ...
            break;
            // ...
        }
    }

Você poderia ligar que até evento Timer um Tick ou algo para fazer periodicamente a verificação.

Outras dicas

Por que se preocupar? Você pode obter uma solução muito melhor para barato a partir de um provedor como RedAlert

A coisa agradável sobre isso é:

1) Ele testa o seu site a partir de fora do firewall, para que ele possa detectar uma ampla variedade de problemas.

2) É uma 3ª parte imparcial para que você possa provar uptime se você precisa de um SLA.

3) Para um pequeno prémio você pode ter a coisa tentativa e diagnosticar os problemas.

4) Pode página ou e-mail quando houver um problema.

5) Você não precisa de encomendar um novo servidor.

Nossa, eu soar como um anúncio para os caras, mas eu prometo que eu não trabalho para eles ou de retrocesso. Tenho apenas sido satisfeito com o serviço para os nossos servidores.

BTW: Eu verifiquei os preços e é cerca de US $ 20 por site / mês. Portanto, você provavelmente poderia pagar por um ano do serviço em menos tempo do que será necessário para construí-lo.

Querendo executar a mesma funcionalidade olhei pela primeira vez em soluções de terceiros. Um serviço especial, que é gratuito e tem sido bastante precisa é MonitorUs .

Se, no entanto, você está querendo construir o seu próprio, então eu teria uma recomendação. Considere o uso de um pedido cabeça em vez de uma solicitação GET:

O método HEAD é idêntico ao GET exceto que o servidor não deve retornar um corpo de mensagem na resposta. o metainformation contida no HTTP cabeçalhos em resposta a um pedido HEAD Devem ser idênticas às informações enviada em resposta a um pedido GET. Este método pode ser utilizado para a obtenção metainformation sobre a entidade implícito no pedido, sem transferir a própria entidade-corpo. Este método é muitas vezes utilizado para o teste links de hipertexto para a validade, acessibilidade e recente modificação. w3.org

O Aqui um link para o artigo de Peter Bromberg que explica como executar um pedido Head in C #.

Use o objeto System.Net.WebClient. É mais fácil de usar do que HttpWebRequest. Ele tem um método "DownloadString" que vai baixar o conteúdo de uma URL em uma string. Esse método também pode lançar um erro WebException se o servidor retorna um 500. Para outros erros você pode analisar a cadeia e olhar para palavras-chave.

Use HttpWebRequest, e envolvê-la em um try catch para WebException. O código de erro no objeto de exceção vai lhe dar o código. 404, etc. Se for 500, você pode imprimir a mensagem.

Se você fizer isso, criar uma página especial que exerce quaisquer subsistemas especiais, como a base de dados, arquivo IO, etc, e serve-se os resultados em texto simples, não html. Isso permitirá que você para analisar os dados retornados mais fácil, e também vai pegar coisas como DB ou problemas IO que podem não dar-lhe um erro 404 ou 500 HTTP.

Tente Application Manager da Adventnet ( http://www.manageengine.com/products/applications_manager/ ), é livre para 5 monitores, e fornece capacidades de monitorização excelentes

Você pode configurar as ações que podem ser feitas em caso de uma falha como envio de e-mail etc.

Se você preferir receber e-mail / SMS quando seus sites estão para baixo, tentar o são meus Sites Up solução baseada na web.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top