Как поймать исключение soap из веб-службы?

Я успешно создаю несколько исключений soap в моей веб-службе. Я хотел бы поймать исключения и получить доступ к строке и ClientFaultCode, которые вызываются с исключением. Вот пример одного из моих исключений в веб-службе:

throw new SoapException("You lose the game.", SoapException.ClientFaultCode);

в моем клиенте я пытаюсь запустить метод из веб-службы, которая может вызвать исключение, и я ловлю его. Проблема в том, что мои блоки catch ничего не делают. См. этот пример:

try
{
     service.StartGame();
}
catch
{
     // missing code goes here
}

Как я могу доступ к строке и ClientFaultCode, которые вызываются с брошенным исключением?

3 ответов


Лови SoapException экземпляра. Таким образом, вы можете получить доступ к его информации:

try {
     service.StartGame();
} catch (SoapException e)  {
    // The variable 'e' can access the exception's information.
}

вы можете захотеть поймать определенные исключения.

try
{
     service.StartGame();
}
catch(SoapHeaderException)
{
// soap fault in the header e.g. auth failed
}
catch(SoapException x)
{
// general soap fault  and details in x.Message
}
catch(WebException)
{
// e.g. internet is down
}
catch(Exception)
{
// handles everything else
}

catch (SoapException soapEx) 
{
  //Do something with soapEx
}