У вас нет такой информации в IErrorHandler
- вы можете только разобрать необработанное сообщение в методе ProvideFault
.
Вы можете попробовать использовать другой подход - реализовать пользовательский IOperationInvoker
, а в методе Invoke
сделать что-то вроде:
// Just synchronous implementation - for asynchronous handle InvokeBegin and InvokeEnd
public object Invoke(object instance, object[] inputs, out object[] outputs)
{
try
{
// Run common invoker - you will create new Invoker as decorator for existing one.
return innerInvoker.Invoke(instance, inputs, outputs);
}
catch(Exception e)
{
// Handle error here
}
}
Операция invoker отвечает за выбор правильной работы в сервисе и его вызов. Это просто идея - я не проверял это.