访问 XML Web 服务异常对象

Accessing XML Webservice Exception Object

我正在调用 XML 网络服务。我正在使用以下功能:

[System.ServiceModel.OperationContractAttribute(Action="http://onlinetools.ups.com/webservices/ShipBinding/v1.0", ReplyAction="*")]
    [System.ServiceModel.FaultContractAttribute(typeof(UPS.ShipServiceReference.ErrorDetailType[]), Action="http://onlinetools.ups.com/webservices/ShipBinding/v1.0", Name="Errors", Namespace="http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1")]
    [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
    [System.ServiceModel.ServiceKnownTypeAttribute(typeof(ShipmentServiceOptionsType))]
    [System.ServiceModel.ServiceKnownTypeAttribute(typeof(CompanyInfoType))]
    System.Threading.Tasks.Task<UPS.ShipServiceReference.ShipmentResponse1> ProcessShipmentAsync(UPS.ShipServiceReference.ShipmentRequest1 request);

当请求没有问题时,我很高兴地发送了结果returns一个“ShipmentResponse1”

但如果请求有问题,我无法弄清楚如何获取错误详细信息,如 Fiddler 中所示:

我已经将我的代码包装在一个基本的 try/catch(Exception ex)中,但是 ex 只包含“faultstring”。

我希望能够找到“PrimaryErrorCode 代码和说明”,但不知道如何去做。

如有任何帮助,我们将不胜感激

ProcessShipmentAsync方法用FaultContractAttribute修饰,指定错误详细信息的类型,这里:UPS.ShipServiceReference.ErrorDetailType[].

[System.ServiceModel.FaultContractAttribute(  
    typeof(UPS.ShipServiceReference.ErrorDetailType[]),  
    Action="http://onlinetools.ups.com/webservices/ShipBinding/v1.0",  
    Name="Errors", Namespace="http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1"
    )]

要在出现错误的情况下访问这些,您必须捕获 FaultException<T>,其中 T 是 UPS.ShipServiceReference.ErrorDetailType[] 类型。
详细信息可在该异常的 Details 属性 上找到。

catch (FaultException<UPS.ShipServiceReference.ErrorDetailType[]> ex)
{
    // Access ex.Details.
}