Не уверен, что могу вам здесь сильно помочь, но позвольте мне попробовать:
на вашем клиенте ваш код в основном вызывает метод и передает ему параметры. Затем стек WCF на стороне клиента преобразует его в сообщение SOAP (обычно с телом XML, но может быть и двоичным) с заголовками и всем, а затем отправляет это сообщение по проводам на сервер для обработки.
Затем сервер пытается десериализовать это сообщение в объект и пытается вызвать сообщение на объекте реализации сервера. Этот метод на объекте сервера, скорее всего, снова будет иметь те же параметры, что и клиент, - однако существует вероятность, что вызов завершится неудачно, прежде чем этот метод даже будет вызван.
Итак, я пытаюсь сказать: вы не можете полагаться на тот факт, что ваш серверный метод с его параметрами действительно вызывается - возможно, была проблема с, например, аутентификация, формат сообщения, отсутствующий заголовок или что-то еще, что приводит к сбою на стороне сервера и выдаче исключения даже до того, как метод на стороне сервера когда-либо будет вызван.
В конце концов, в IErrorHandler я не знаю, как получить сообщение и / или метод и его параметры - все, что вы можете получить - это ошибка, произошедшая на сервере, и вы можете используйте это, чтобы превратить его в ошибку SOAP.
Что вы могли бы сделать - как на стороне клиента, так и на стороне сервера - это создать новое поведение, которое подключается к стеку WCF и записывает вызываемые методы и передаваемые в них параметры - путем реализации класса, реализующего IParameterInspector
интерфейс WCF. Но это будет вызвано только в том случае, если сообщение на клиенте и сервере будет десериализовано должным образом, а метод на стороне сервера действительно будет вызван.
Проверьте некоторые из этих ссылок для получения дополнительной информации о расширяемости WCF:
Надеюсь, это немного поможет!
Марк