你如何从Web服务中捕获抛出的SOAP异常?

时间:2009-11-26 19:36:33

标签: c# soap service exception

我在Web服务中成功抛出了一些soap异常。我想捕获异常并访问被异常调用的字符串和ClientFaultCode。以下是我在Web服务中的一个例外情况的示例:

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

在我的客户端中,我尝试从可能引发异常的Web服务运行该方法,并且我抓住了它。问题是我的catch块没有做任何事情。见这个例子:

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

如何访问使用抛出异常调用的字符串和ClientFaultCode?

3 个答案:

答案 0 :(得分:11)

您可能希望捕获特定的例外情况。

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
}

答案 1 :(得分:7)

抓住SoapException个实例。这样您就可以访问其信息:

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

答案 2 :(得分:1)

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