WebサイトがC#アプリケーションから生きているかどうかをテストする最良の方法を探しています。
私のアプリケーションは、Winforms UI、バックエンドWCFサービス、およびUIと他のコンシューマーにコンテンツを公開するためのwebsiteで構成されています。 UIが起動し、WCFサービスまたはWebサイトがダウンしているために正常に動作しない状況を防ぐために、すべての機能が動作していることを確認するアプリ起動チェックを追加しました。
アプリケーションはC#、. NET 3.5、Visual Studio 2008で記述されています
現在、WebサイトのテストページにWebリクエストを送信し、Webサイトをテストして、結果を表示します。
WebRequest request = WebRequest.Create("http://localhost/myContentSite/test.aspx");
WebResponse response = request.GetResponse();
この呼び出し中に例外がスローされない場合、すべてが正常であり、UIを起動できると想定しています。
これは最も簡単で正しい方法ですか、それとも私がC#で知らない他の卑劣な呼び出しか、それを行うより良い方法ですか?.
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response == null || response.StatusCode != HttpStatusCode.OK)
WebResponseを使用している間は、応答ストリームを必ず閉じてください(つまり、.close)。そうしないと、特定の繰り返し実行後にマシンがハングします。例えば
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sURL);
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
// your code here
response.Close();
codePlexの NDiagnostics プロジェクトから...
public override bool WebSiteIsAvailable(string Url)
{
string Message = string.Empty;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url);
// Set the credentials to the current user account
request.Credentials = System.Net.CredentialCache.DefaultCredentials;
request.Method = "GET";
try
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
// Do nothing; we're only testing to see if we can get the response
}
}
catch (WebException ex)
{
Message += ((Message.Length > 0) ? "\n" : "") + ex.Message;
}
return (Message.Length == 0);
}
WCFサービスとWebサイトが同じWebアプリに存在すると仮定すると、アプリケーションステータスを返す「ステータス」WebServiceを使用できます。おそらく次のいくつかを実行する必要があります。
次に、WebServiceのWin.Formsアプリでクライアントを作成します。 WSが応答しない場合(つまり、起動時に例外が発生する場合)、Webサイトはダウンしています(「一般的なエラー」など)。
。
今日は HttpClient() を使用して回答を更新できます。
HttpClient Client = new HttpClient();
var result = await Client.GetAsync("https://stackoverflow.com");
int StatusCode = (int)result.StatusCode;