I'm calling a C# web service using the .net Service Model and occasionally this web service throws Microsoft.SharePoint.SoapServer.SoapServerException. I can catch this particular exception as a FaultException in my client code however I cannot get the friendly error message returned by the web service using FaultException.
Following is the network trace for the web service when there is an exception.
<?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>
I'm very interested in getting the content between errorstring node in the above response. However from FaultException class I cannot retrieve the above error message. Does that mean the .NET framework doesn't deserialize the above response correctly or am I using the wrong excepetion class here.
The only error message I could get from FaultException is "Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown" nothing else.
Please note that I don't have any control over web service.