Вставьте все внутренние ошибки сервера в журнал событий Windows - PullRequest
0 голосов
/ 20 августа 2009

Я разработал небольшой сервис WCF, который обрабатывает HTTP-запрос.

Я хочу знать о каждой случившейся ошибке:

  • все, что вызывает 500 Internal Server Error из представления контрактов
  • все, что вызывает CommunicationException из представления привязок (я написал пользовательское, но также использую стандартные)

Ошибки должны быть занесены в журнал событий Windows.

Мой вопрос:

  • Есть ли возможность добавить центральный обработчик событий для всего стека WCF, который фиксирует все исключения и выводит их в журнал событий?

Привет.

Ответы [ 2 ]

1 голос
/ 20 августа 2009

На стороне сервера - да, как уже отмечал Джон, вы можете в основном реализовать интерфейс IErrorHandler в своем классе обслуживания и фиксировать все ошибки на этой стороне.

Однако на стороне клиента вам просто нужно будет использовать старый добрый .NET try {...} catch {...} для защиты всех вызовов службы - в конце концов, вы могли бы потенциально

  • вызвать сервер, который вообще не существует
  • вызвать сервер, который временно недоступен
  • слабое сетевое соединение (парень с большим бульдозером оборвал ваш сетевой провод :-))
  • больше подобных вещей

Это будут CommunicationExceptions (или их потомки), и они должны обрабатываться на стороне клиента по мере их возникновения.

Таким образом, вы можете централизованно обрабатывать вещи на стороне сервера (по крайней мере, пока сообщение дошло до вашего класса обслуживания и обрабатывается) - все остальное должно обрабатываться отдельно.

Марк

1 голос
/ 20 августа 2009

Для этой цели вы можете использовать IErrorHandler интерфейс .

...