私のサイトはダウンしていますか、機能していないか、エラーがありますか?

StackOverflow https://stackoverflow.com/questions/607846

質問

小さなウィンドウアプリケーションを作成して、サイトに毎時間自動的にアクセスし、正常に動作するか、ダウンしているか、動作していないか、エラーがあるかどうかを確認します"例:404、ネットワークエラー、接続db failed"画面にメッセージが表示されます。

.NET言語を使用してプログラムでエラーが発生したことをどのようにして知ることができますか?

役に立ちましたか?

解決

WebClient を使用するのは非常に簡単です。次のようになります。

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

これを Timer Tick イベントまたは何かにフックして、定期的にチェックを行うことができます。

他のヒント

なぜわざわざ? RedAlert

のようなプロバイダーから、安価ではるかに優れたソリューションを入手できます。

これのいいところは:

1)ファイアウォールの外側からサイトをテストするため、さまざまな問題を検出できます。

2)公平なサードパーティであるため、SLAが必要な場合は稼働時間を証明できます。

3)少額のプレミアムでは、問題を試して診断することができます。

4)問題がある場合、ページングまたは電子メールで送信できます。

5)新しいサーバーをコミッションする必要はありません。

そうね、私はみんなの広告のように聞こえますが、私は彼らのために働いたり、キックバックを取得しないと約束します。私たちのサーバーのサービスに満足しています。

ところで:価格を確認したところ、サイトあたり月額約20ドルです。そのため、おそらく自分で構築するよりも短い時間で1年間のサービスを支払うことができます。

同じ機能を実行したいのですが、最初にサードパーティのソリューションを検討しました。無料でかなり正確なサービスの1つは、 MonitorUs です。

ただし、独自のビルドを作成する場合は、1つの推奨事項があります。 getリクエストの代わりにHeadリクエストを使用することを検討してください:

  

HEADメソッドはGETと同じです   サーバーが戻してはならないことを除いて   応答のメッセージ本文。の   HTTPに含まれるメタ情報   HEADリクエストへの応答のヘッダー   情報と同一である必要があります   GETリクエストへの応答として送信されます。   このメソッドは、取得に使用できます   エンティティに関するメタ情報   リクエストによって暗示される   エンティティ本体自体を転送します。   この方法は、テストによく使用されます   有効性のためのハイパーテキストリンク、   アクセシビリティ、最近   変形。 w3.org

C#でヘッドリクエストを実行する方法を説明するPeter Brombergの記事へのリンク。

System.Net.WebClientオブジェクトを使用します。 HttpWebRequestよりも使いやすいです。 " DownloadString"があります。 URLのコンテンツを文字列にダウンロードするメソッド。サーバーが500を返した場合、そのメソッドはWebExceptionエラーをスローすることもあります。他のエラーについては、文字列を解析してキーワードを探すことができます。

HttpWebRequestを使用し、WebExceptionのtry catchでラップします。例外オブジェクトのエラーコードは、コードを提供します。 404など。500であれば、メッセージを印刷できます。

これを行う場合、データベース、ファイルIOなどの特別なサブシステムを実行する特別なページを作成し、結果をHTMLではなくプレーンテキストで提供します。これにより、返されたデータを簡単に解析できるようになります。また、404または500 HTTPエラーが発生しない可能性のあるDBまたはIOの問題などもキャッチします。

AdventnetのApplication Manager( http://www.manageengine.com/products/applications_manager/ )、5台のモニターが無料で、優れた監視機能を提供します

メールの送信など、障害が発生した場合に実行できるアクションを設定できます。

サイトがダウンしているときにメール/ SMSを受け取りたい場合は、私のサイトをアップウェブベースのソリューション。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top