Question

Je veux créer une petite application Windows qui ira automatiquement sur mon site toutes les périodes et vérifiera si elle fonctionne correctement, si elle est tombée en panne, si elle ne fonctionne pas ou si une erreur se produit "Exemples: 404, erreur réseau, connexion à db échoué " il affichera un message sur mon écran.

Comment puis-je savoir qu’il ya une erreur dans un programme utilisant un langage .NET par programme?

Était-ce utile?

La solution

C'est assez facile à faire avec un WebClient . Cela ressemblerait à quelque chose comme ça:

    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;
            // ...
        }
    }

Vous pouvez le lier à un événement Tick de Timer ou à un autre élément permettant d'effectuer périodiquement cette vérification.

Autres conseils

Pourquoi s'embêter? Vous pouvez obtenir une solution bien meilleure, à moindre coût, d'un fournisseur tel que RedAlert

.

La bonne chose à ce sujet est:

1) Il teste votre site depuis l'extérieur de votre pare-feu afin qu'il puisse détecter une plus grande variété de problèmes.

2) Il s’agit d’une tierce partie impartiale, ce qui vous permet de prouver le temps de disponibilité, le cas échéant, pour un contrat de niveau de service.

3) Pour une petite prime, vous pouvez faire essayer le problème et diagnostiquer les problèmes.

4) Il peut vous contacter ou vous envoyer un courrier électronique en cas de problème.

5) Vous n'avez pas besoin de mettre en service un nouveau serveur.

Décidément, je parais comme une publicité pour les gars, mais je vous promets que je ne travaille pas pour eux et que je ne reçois pas de pots-de-vin. Je viens d’être satisfait du service pour nos serveurs.

BTW: J'ai vérifié les prix et le prix est d'environ 20 $ par site / mois. Ainsi, vous pourriez probablement payer pour une année de service en moins de temps que nécessaire pour le construire vous-même.

Désirant exécuter la même fonctionnalité, j’ai d’abord étudié les solutions tierces. MonitorUs est un service gratuit et relativement précis.

Si, toutefois, vous souhaitez créer le vôtre, j'aurais une recommandation. Pensez à utiliser une requête Head au lieu d'une requête get:

  

La méthode HEAD est identique à GET   sauf que le serveur NE DOIT PAS retourner   un corps de message dans la réponse. le   métainformation contenue dans le HTTP   en-têtes en réponse à une demande HEAD   DEVRAIT être identique à l'information   envoyé en réponse à une demande GET.   Cette méthode peut être utilisée pour obtenir   métainformation sur l'entité   impliqué par la demande sans   transférer le corps de l'entité lui-même.   Cette méthode est souvent utilisée pour tester   liens hypertextes pour la validité,   accessibilité, et récente   modification. w3.org

Voici un lien vers l'article de Peter Bromberg qui explique comment effectuer une demande d'en-tête en C #.

Utilisez l'objet System.Net.WebClient. C'est plus facile à utiliser que HttpWebRequest. Il possède un " DownloadString " méthode qui téléchargera le contenu d’une URL dans une chaîne. Cette méthode peut également générer une erreur WebException si le serveur renvoie 500. Pour les autres erreurs, vous pouvez analyser la chaîne et rechercher des mots clés.

Utilisez HttpWebRequest et enveloppez-le dans une capture d'essai pour WebException. Le code d'erreur dans l'objet exception vous donnera le code. 404, etc. S'il s'agit du numéro 500, vous pouvez imprimer le message.

Si vous faites cela, créez une page spéciale qui exerce des sous-systèmes spéciaux, tels que la base de données, le fichier IO, etc., et affiche les résultats en texte brut, et non en HTML. Cela vous permettra d’analyser plus facilement les données renvoyées et d’attraper des problèmes tels que des problèmes de base de données ou d’IO qui ne vous donneront peut-être pas une erreur HTTP 404 ou 500.

scroll top