访问 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.
}
我正在调用 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.
}