IErrorhandler не возвращается клиенту
Я пытаюсь реализовать IErrorhandler
что оказывается настоящей болью!
У меня есть метод provideFault из IErrorhandler
интерфейс вроде так...
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
FaultException<ServiceFault> faultException = ServiceMethods.BuildFaultException<ServiceFault>("Provide Fault Error", error.Message);
MessageFault messageFault = faultException.CreateMessageFault();
fault = Message.CreateMessage(version, messageFault, faultException.Action);
}
Если мои сервисные операции попадают в исключение, он попадает в этот метод для создания FaultException
, Моя проблема в том, что клиент не получает это FaultException
вернулся к ним.
Я что-то упускаю здесь очевидное?
заранее спасибо
2 ответа
Если вы не видите FaultException<ServiceFault>
на стороне клиента, дважды проверьте, что вы не пропустили контракт на обслуживание:
[ServiceContract]
public interface IHelloService
{
[OperationContract]
[FaultContract(typeof(ServiceFault))]
void DoWork();
}
У меня небольшой опыт работы с WCF, но я думаю, что вы просто создаете сообщение, а не отправляете его через запрос или ответ. Я думаю, что по этой причине ваш клиент не получает сообщение с исключением.
Вы реализовали метод HandleError
интерфейса IErrorHandler?
Ваш вопрос похож на эти вопросы, уже задаваемые в SO:
- WCF IErrorHandler Расширение не возвращает указанный сбой
- Как создать сообщение WCF, эквивалентное HTTP 403, из IErrorHandler?
Может быть, они могут помочь вам.
Читайте также эту ветку в MSDN.