Я хочу отслеживать сервер WCF и отправлять уведомления по электронной почте, если сервер не работает. Для этого я пишу консольное приложение, которое периодически отправляет фиктивный запрос на сервер и проверяет, отправляется ли ответ обратно. Когда консольное приложение получило исключение, у сервера возникли проблемы, в том числе сервер не работает.
Однако проблема в том, что я получил разные исключения для разных статусов сервера. Ниже приведены исключения, возвращаемые сервером, когда он находится в другом статусе. Тем не менее, похоже, что все они относятся к категории отключенных серверов. Есть идеи??:
Когда IIS отключен
System.ServiceModel.EndpointNotFoundException,
Сообщение:
На http://localhost/service.svc не было прослушивающей конечной точки, которая могла бы принять сообщение. . Это часто вызвано неверным адресом или действием SOAP. Дополнительные сведения см. в разделе InnerException, если он присутствует.Внутреннее сообщение об исключении: удаленный сервер вернул ошибку: (404) не найден
Если имя файла Web.config
намеренно изменено на неправильное:
System.ServiceModel.ServiceActivationException
Ссылка: http://localhost/service.svc
Сообщение:< br> Запрошенная служба «http://localhost/service.svc» не может быть активирована. Дополнительные сведения см. в журналах диагностической трассировки сервера.
По другой неизвестной причине
System.ServiceModel.ServerTooBusyException
Сообщение:
Служба HTTP, расположенная по адресу http://localhost/service.svc' слишком занят.
Сообщение:
Удаленный сервер вернул ошибку: (503) Сервер недоступен.
Обновление 1
Исключение НЕ всегда возвращает код состояния http.
Обновление 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??
{
...
}