0

午後の皆さん、

以下に使用する最適な方法について少しアドバイスした直後。

私は .net に慣れていないので、開発中の Asp.net Web ページを持っています。このページでは、ping コマンドでいくつかの内部 Web サイトをリストし、それらのステータス (オンライン/オフライン) の概要を説明しています。これは現在のもので、ボタンをクリックすることで有効になります。

この開発 Web ページを設定して、朝の特定の時間 (たとえば午前 7 時) に自動的に実行されるようにし、これらのアイテムのステータスを電子メールでユーザー グループに通知する必要があります。

以前に Microsoft Visual Studio (VB) 2010 を使用したことがあり、SQL 2008 との間でデータを接続/抽出/更新する単純な Web 作品を作成できます。SQL でスケジュールされたジョブを作成した経験もありますが、あまり多くはありません。

SQL 2008でスケジュールされたジョブを作成し、データをデータベースに入力する方法を見つけ、このデータをWebサイトで使用して、グリッドビューなどに表示できると思いました。また、SQL ジョブまたは Web サイトから、これらの内部 Web サイトのステータスをユーザーのグループに電子メールで送信します。

.netだけで上記を完了することができるかどうか誰かが知っていますか? ある種のスクリプトを作成したり、指定した時間に Web ページを実行するようにスケジュールしたりできますか?

この仕事に取り組むための最善の方法について 100% 確信があるわけではなく、経験も限られています。上記を完了する方法について、誰でも最善の方法のアイデアを提案できますか。

よろしくベット。

4

2 に答える 2

0

ping実装するのはかなり簡単ですが、達成しようとしていることに関連してコマンドが役立つとは思いません。

Fredrik が指摘したように、ping はサーバーが使用可能であることを示すだけです。個々の Web サイトがそのサーバー上で機能しているかどうかについては何も述べていません。

もし私がこれを行っていたら、頻繁に実行されるサービスを作成するでしょう。このサービスは、Web サイトに get 要求を発行し、コンテンツを少し解析して、返されたものが予期されたものであることを確認し、データベース内のレコードを更新して、接続の時間と状態 (アップ/ダウン) を示します。 )。

例えば:

public String CheckSite(String postLocation) {
    HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(postLocation);
    // Setting the useragent seems resolves certain issues that *may* crop up depending on the server
    httpRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
    httpRequest.KeepAlive = false;
    httpRequest.Method = "GET";

    using ( HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse() ) {
        using ( StreamReader reader = new StreamReader(httpResponse.GetResponseStream()) ) {
            result = reader.ReadToEnd();
        } // using reader
    } // using httpResponse

    return result;
}

この単純な呼び出しは、サーバーからページをロードします。そこから解析して、「エラー」などの単語があるかどうか、または何を持っているかを確認できます。見栄えが良ければ、サイトが稼働していることを報告します。

上記が C# であることはわかっていますが、必要に応じて簡単に VB に変換できるはずです。また、呼び出しの前後に try .. catch を配置する必要があります。エラーが発生した場合は、サーバーが完全にオフラインになっていることがわかります。ページが返されたが、「エラー」または何かが含まれている場合、サーバーは稼働していることがわかりますが、アプリはダウンしています。

于 2013-05-20T14:05:35.703 に答える
0

個人的に。. . 最もエレガントな解決策は次のとおりだと思います:(未テスト)

public String CheckSite(String postLocation) {
    HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(postLocation);
    // Setting the useragent seems resolves certain issues that *may* crop up depending on the server
    httpRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
    httpRequest.KeepAlive = false;
    httpRequest.Method = "GET";

    using ( HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse() ) {
       if(httpResponse.StatusCode != {check for valid status codes here})

{ //無効な応答に基づいて何かを行います。} } // httpResponse を使用

    return result;
}
于 2013-05-20T15:43:26.820 に答える