1

小さな Windows アプリケーションを作成して、定期的にサイトに自動的に移動し、正常に動作しているかどうか、ダウンしている場合、動作していない場合、または「例: 404、ネットワーク エラー、db への接続に失敗しました」というエラーが発生したかどうかを確認します。画面にメッセージが表示されます。

任意の .NET 言語を使用してプログラムでエラーがあることを知るにはどうすればよいですか?

4

8 に答える 8

7

で行うのは非常に簡単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;
            // ...
        }
    }

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

于 2009-03-03T19:59:16.540 に答える
5

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

これの良いところは次のとおりです。

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

2) 公平なサードパーティであるため、SLA が必要な場合はアップタ​​イムを証明できます。

3) 少額の保険料で、問題を試して診断してもらうことができます。

4) 問題が発生した場合、ポケットベルまたは電子メールで通知できます。

5) 新しいサーバーを委託する必要はありません。

ねえ、私はみんなのための広告のように聞こえますが、私は彼らのために働いたり、リベートを受けたりしないことを約束します. サーバーのサービスに満足しています。

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

于 2009-03-03T20:00:45.367 に答える
3

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

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

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

C# で Head リクエストを実行する方法を説明しているPeter Bromberg の記事へのリンクを次に示します。

于 2009-03-03T20:11:34.343 に答える
2

HttpWebRequest を使用し、WebException の try キャッチでラップします。例外オブジェクトのエラー コードからコードが得られます。404 など。500 の場合は、メッセージを印刷できます。

于 2009-03-03T19:53:35.977 に答える
2

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

于 2009-03-03T19:54:35.990 に答える
1

Adventnet のアプリケーション マネージャー ( http://www.manageengine.com/products/applications_manager/ ) を試してみてください。モニター 5 台まで無料で、優れた監視機能を提供します。

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

于 2009-03-03T20:10:24.283 に答える
1

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

于 2009-03-03T20:03:57.373 に答える
0

サイトがダウンしているときに電子メール/SMS を受け取りたい場合は、Are My Sites Up Web ベースのソリューションを試してください。

于 2009-03-03T20:06:13.153 に答える