3

世界中に動的な数のサーバーがある分散Webサイト(.NET、IIS)があります。

私は、自宅の場所に配置される[シンプルな]ユーティリティを構築したいと考えています。Webサーバーが動作しているかどうかを確認するために、頻繁に「ping」を実行します。次に、サーバーごとにこの結果をデータベースに記録して、現在のステータスと検出されたダウンタイムの履歴を表示します。

これを行うための最良の方法は何ですか?.NETからHTTP経由で接続しますか?これを(理想的には)多くのコードではなく、サービスとして実行したいと思います。

リンクやサンプルコードをいただければ幸いです。

これは標準的な方法ですか?または、分散アプリは通常、何か違うことをしますか?(pingされる代わりに自宅に電話するように)。

4

2 に答える 2

3

これがあなたに近いSOの質問です:

WebサイトがC#アプリケーションから生きているかどうかをテストするための最良の方法

基本的に、次のコードを使用してWebサイトのステータスを確認できます。

WebRequest request = WebRequest.Create("http://localhost/myContentSite/test.aspx");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response == null || response.StatusCode != HttpStatusCode.OK)
{
   Console.WriteLine("You have a problem");
}

それを行うための最良の方法として、あなたの状況で可能であれば、電話-自宅モデルを使用することをお勧めします。そうすれば、誰が追加されたかを気にする必要がなくなります。最初にチェックインしたときに自動的に表示されます。ただし、すべてのWebサイトのコードを完全に制御できない場合(またはすでにWebサイトを起動している場合)は、一元化されたコードを使用することをお勧めします。サイトの可用性をテストする監視ソリューション。これにより、システムに加える必要のある変更の量が減ります。最後に、サイトが稼働していることを本当に確認したい場合は、「I'm alive」メッセージを送信するのではなく、リモートで確認してください。これにより、サイトは送信できる可能性がありますが、外部ネットワークからは到達できない可能性があるため、ファイアウォールなども機能していることが保証されます。

于 2011-05-28T21:10:31.107 に答える
0

WebRequestこれにはクラスを使用できます。

var request = WebRequest.Create("http://google.com");
using (var response = request.GetResponse())
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
    var responseText = streamReader.ReadToEnd();

    // validate that responseText has content that you would expect
}

ページのコンテンツをチェックして、Webサイトが正しく展開されていることを確認することをお勧めします。サイトが正しく再デプロイされなかった場合、WebサイトはStatusCode HttpStatusCode.OKを返すことができますが、期待したページの代わりにIISウェルカムページを表示します。

于 2011-05-28T21:13:49.817 に答える