2010-01-25 7 views
6

Estoy accediendo a un servicio web SOAP 1.1 y está devolviendo una falla. El servicio web no define ningún contrato de falla en el WSDL por lo que puedo ver. Mi cliente WCF correlaciona el error con una FaultException (en lugar de una FaultException <T>). Todo esto tiene sentido. El problema es que el servicio devuelve información de diagnóstico útil en el elemento de detalle del error, al que me gustaría acceder para poder descargarlo en un registro de seguimiento. Parece que FaultException no proporciona ningún acceso al elemento de detalle, presumiblemente porque sin un contrato de falla no sabe qué hay allí.Cómo acceder a los detalles de fallas de SOAP 1.1 desde el cliente de WCF (sin contrato por falla)

Pero no necesito deserializar el XML de detalles: solo el XML sin procesar como cadena funcionará bien para fines de diagnóstico.

¿Hay alguna manera de obtener acceso al detalle XML desde un cliente WCF, en este escenario?

Respuesta

11

como se detalla aquí: http://www.theruntime.com/blogs/jacob/archive/2008/01/28/getting-at-the-details.aspx

puede utilizar esta solución para obtener los detalles:

} catch (FaultException soapEx) 
{  
    MessageFault mf = soapEx.CreateMessageFault();  
    if (mf.HasDetail) 
    {  
     XmlDictionaryReader reader = mf.GetReaderAtDetailContents();  
     ...  
    }  
} 
+1

Exactamente lo que estaba buscando. ¡Gracias! – Andy

+1

Te daría +10 si fuera posible ... Acabo de recordar * que estaba en algún lado, pero no pude encontrarlo ni siquiera en el volcado de la API de MSDN. ¡Muchas gracias! – quetzalcoatl

+0

¡Impresionante, gracias! Puede repetir los datos haciendo: while (reader.Read()) {} y acceder a los datos dentro del bucle a través de reader.Name y reader.Value –

Cuestiones relacionadas