2014-12-01 1 views
3

Я использую веб-службы. Некоторые методы генерируют исключение при вызове i, поскольку, например, параметры являются недопустимыми значениями. Я хочу обрабатывать исключения, но он не содержит никакой информации о данных, а только сообщение «Плохой запрос». Это мой ответ HTTP: enter image description hereЗахват ошибок SOAP и исключений для обработки

 try 
     { 
      var data = client.SomeMethod(4); 
     } 
     catch (Exception exception) 
     { 
      // exception.Message = Bad Request 
      // exception don't contains any more data information 
     } 

Как я могу захватить другую информацию

ответ

2

Вы можете поймать исключение с помощью FaultException, когда код статуса http равен 2xx или 5xx, а не 4xx. Вы можете поймать код статуса httpxxxxxx с System.ServiceModel.ProtocolException, а затем получить поток из InnerException и проанализировать его или получить исключение Fault из этого потока. См. http://blogs.msdn.com/b/nathana/archive/2011/03/31/deciphering-a-soap-fault-with-a-400-status-code.aspx для более подробной информации.

1

Я предполагаю, что это веб-сервис WCF? Вы перехватываете множество исключений. Попробуйте с FaultException<TDetail>.

Типичные развернутые службы используют FaultContractAttribute для официального определения всех ошибок SOAP, которые клиент может ожидать получить в ходе обычной операции. Информация об ошибках в FaultContractAttribute отображается как исключение FaultException (где типовой параметр является сериализуемым объектом ошибки, указанным в FaultContractAttribute операции), когда он поступает в клиентское приложение. FaultContractAttribute может использоваться для указания ошибок SOAP как для двухсторонних методов обслуживания, так и для асинхронных пар методов.

Поскольку FaultException является исключением FaultException и, следовательно, CommunicationException, для обнаружения определенных ошибок SOAP, вы должны улавливать типы FaultException до типов FaultException и CommunicationException или обрабатывать указанные исключения в одном из этих обработчиков исключений.

+0

Я не знал о FaultException , однако я не могу зафиксировать какое-либо FaultExecption, только CommunicationException, но у этого нет никакой информации. Я не создаю службу. –