Я вызываю веб-сервис C # с использованием модели сервиса .net, и иногда этот веб-сервис генерирует исключение Microsoft.SharePoint.SoapServer.SoapServerException. Я могу поймать это конкретное исключение как FaultException в моем клиентском коде, однако не могу получить дружественное сообщение об ошибке, возвращенное веб-службой с помощью FaultException.
Ниже приводится трассировка сети для веб-службы при возникновении исключения.
<?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>
Я очень заинтересован в получении содержимого между узлом errorstring в приведенном выше ответе. Однако из класса FaultException я не могу получить вышеуказанное сообщение об ошибке. Означает ли это, что .NET Framework неправильно десериализует приведенный выше ответ, или я использую здесь неправильный класс исключений.
Единственное сообщение об ошибке, которое я мог получить от FaultException, это «Исключение типа« Microsoft.SharePoint.SoapServer.SoapServerException »было сгенерировано» больше ничего.
Обратите внимание, что я не имею никакого контроля над веб-сервисом.