Я пытаюсь реализовать IErrorHandler в моей службе WCF, чтобы регистрировать каждое исключение, которое попадает в границу службы, прежде чем она будет передана клиенту. Я уже использую IErrorHandlers для перевода исключений в типизированные исключения FaultExceptions, что было очень полезно. Согласно MSDN для IErrorHandler.HandleError (), он также предназначен для ведения журнала на границе.
Проблема в том, что функция HandleError не гарантированно вызывается в потоке операций, поэтому я не могу понять, как получить информацию о том, какая операция вызвала исключение. Я могу получить TargetSite из самого исключения, но это дает мне внутренний метод вместо операции. Я мог бы также проанализировать строку StackTrace, чтобы выяснить, куда она была брошена, но это кажется немного хрупким и фальшивым. Есть ли какой-либо согласованный, поддерживаемый способ получения какой-либо информации о состоянии (сообщения, описание операции и т. Д.) В функции HandleError? Или какие-либо другие способы автоматически регистрировать исключения для вызовов службы?
Я ищу решение, которое можно внедрить в производство, используя мою существующую среду ведения журналов, поэтому SvcTraceViewer не сделает это за меня.
Спасибо.