Ваш вопрос:
Как можно поймать похожее исключение (красный: ProtocolViolationException)?
В вашем сервисном приложении перехватите ProtocolViolationException
со следующим кодом:
catch (ProtocolViolationException ex)
{
// do something with your exception here
// for example, throw a FaultException that will be communicated to the client
throw new FaultException<ProtocolViolationException>
(ex, new FaultReason(ex.Message), new FaultCode("Sender"));
}
Для правильной отправки клиенту вам необходимо установить дополнительный атрибут в договоре операции, например:
[OperationContract()]
[FaultContract(typeof(ProtocolViolationException))]
И затем на стороне клиента вы можете предвидеть это конкретное исключение и обрабатывать его изящно, например:
catch (FaultException<ProtocolViolationException> ex)
{
Console.WriteLine("FaultException<>: " + ex.Detail.GetType().Name + " - " + ex.Detail.Message);
}
Это отвечает на ваш вопрос?