WCFサーバーを監視し、サーバーがダウンした場合に電子メール通知を送信したい。これを実現するために、サーバーにダミーのリクエストを定期的に送信し、応答が返されるかどうかを確認するコンソールアプリを作成しています。コンソールアプリが例外を受信すると、サーバーがダウンするなどの問題がサーバーに発生します。
ただし、問題は、サーバーのステータスが異なると例外が発生することです。以下は、サーバーが異なるステータスのときにサーバーから返される例外です。ただし、すべてサーバーダウンカテゴリに属しているようです。何か案が??:
IISがオフになっている場合
System.ServiceModel.EndpointNotFoundException、
メッセージ:メッセージを受け入れることができるhttp://localhost/service.svc
で リッスンしているエンドポイントがありませんでした。これは多くの場合、誤ったアドレスまたはSOAPアクションが原因で発生します。詳細については、InnerException(存在する場合)を参照してください。内部例外メッセージ:リモートサーバーがエラーを返しました:(404)見つかりません
Web.configファイルが意図的に間違った名前に変更された場合:
System.ServiceModel.ServiceActivationException
リンク: http://localhost/service.svc
メッセージ:
要求されたサービス「http://localhost/service.svc」をアクティブ化できませんでした。詳細については、サーバーの診断トレースログを参照してください。
その他の不明な理由
System.ServiceModel.ServerTooBusyException
メッセージ:http://localhost/service.svc
' にあるHTTPサービスがビジーです。 メッセージ: リモートサーバーがエラーを返しました:(503)サーバーを利用できません。
アップデート1
例外は常にhttpステータスコードを返すとは限りません。
Update 2 WCFプロキシを使用してサービスを呼び出す以外に、以下のようにWebRequestも使用する必要があります。
try
{
WebRequest webRequest = WebRequest.Create(uri);
webRequest.Method = "GET";
HttpWebResponse httpWebResponse = (HttpWebResponse)webRequest.GetResponse();
}
catch () //what excpetion will tell me server is down??
{
...
}