¿Qué pasa con el uso de un inspector de mensaje? ¿Has comprobado el IClientMessageInspector?
Puede tener este aspecto:
El mensaje inspector de
public class MessageInspector : IClientMessageInspector
{
...
#region IClientMessageInspector Members
public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
//rethrow your exception here, parsing the Soap message
if (reply.IsFault)
{
MessageBuffer buffer = reply.CreateBufferedCopy(Int32.MaxValue);
Message copy = buffer.CreateMessage();
reply = buffer.CreateMessage();
object faultDetail = //read soap detail here;
...
}
}
#endregion
...
}
El comportamiento de punto final
public class MessageInspectorBehavior : IEndpointBehavior
{
...
#region IEndpointBehavior Members
public void ApplyClientBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime clientRuntime)
{
MessageInspector inspector = new MessageInspector();
clientRuntime.MessageInspectors.Add(inspector);
}
#endregion
...
}
http://weblogs.asp.net/paolopia/archive/2007/08/23/writing-a-wcf-message-inspector.aspx
Creo que una buena práctica consiste en use exceptions as faults too.
Tuve exactamente el mismo problema, y me quedé consternado cuando vi cuan pobres eran las respuestas a esta pregunta. Le doy una recompensa con la esperanza de que alguien lo note, a pesar de que es bastante viejo. –
Genial, pero supongo que esto simplemente no es posible. He avanzado y ya no estoy trabajando en este proyecto. IIRC, terminé tragando la píldora amarga y cambiándola a todas partes. Pero no recuerdo ningún detalle. –
Por una cosa, creo que la redacción se ha invertido, ¿no quieres FaultExceptiom -> SoapException (para probar)? –