Sto chiamando un servizio Web C# utilizzando il .net Service Model e occasionalmente questo servizio Web lancia Microsoft.SharePoint.SoapServer.SoapServerException. Posso rilevare questa particolare eccezione come FaultException nel mio codice client, ma non riesco a ottenere il messaggio di errore amichevole restituito dal servizio web utilizzando FaultException.Catching FaultException in WebServices
Di seguito è riportata la traccia di rete per il servizio Web in presenza di un'eccezione.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.</faultstring>
<detail>
<errorstring xmlns="http://schemas.microsoft.com/sharepoint/soap/">Access to this Web site has been blocked.
Please contact the administrator to resolve this problem.</errorstring>
<errorcode xmlns="http://schemas.microsoft.com/sharepoint/soap/">0x81020071</errorcode>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Sono molto interessato a ottenere il contenuto tra il nodo errortring nella risposta sopra. Tuttavia dalla classe FaultException non riesco a recuperare il messaggio di errore sopra riportato. Significa che il framework .NET non deserializza correttamente la risposta sopra o sto usando la classe di eccezioni sbagliata qui.
L'unico messaggio di errore che potrei ottenere da FaultException è "Eccezione di tipo" Microsoft.SharePoint.SoapServer.SoapServerException "è stato lanciato" nient'altro.
Si prega di notare che non ho alcun controllo sul servizio web.
Grazie, il codice mi ha appena dato un'idea di come risolvere il mio problema (dopo un paio d'ore di combattimento). Se stai invocando i metodi della classe proxy wcf tramite reflection, sii consapevole di quell'eccezione di riflessione clr throw con eccezione fault come inner. –