/// <summary> /// Constructor /// </summary> /// <param name="responseMessage">ResponseMessage to build it from</param> /// public EWSException(ResponseMessageType responseMessage) : base(responseMessage.MessageText) { this.responseMessage = responseMessage; this.fromSoapFault = false; // Look at the MessageXml and see if there are any property paths // FieldURIMapper.TryExtractFieldURIsFromResponseMessage(responseMessage, out this.propertyPaths); }
/// <summary> /// Constructor /// </summary> /// <param name="soapException">SoapException to build it from</param> /// public EWSException(SoapException soapException) : base(soapException.Message, soapException) { this.responseMessage = BuildResponseMessageFromSoapFault(soapException); this.fromSoapFault = true; }
/// <summary> /// Helper method for building a ResponseMessageType instance from a soap fault /// </summary> /// <param name="soapException">Soap exception</param> /// <returns>ResponseMessage</returns> /// private ResponseMessageType BuildResponseMessageFromSoapFault(SoapException soapException) { ResponseMessageType result = new ResponseMessageType(); result.DescriptiveLinkKey = 0; result.DescriptiveLinkKeySpecified = true; result.MessageText = soapException.Message; XmlElement detailElement = soapException.Detail as XmlElement; XmlElement responseCodeElement = detailElement[ "ResponseCode", "http://schemas.microsoft.com/exchange/services/2006/errors"]; result.ResponseCode = (ResponseCodeType)Enum.Parse( typeof(ResponseCodeType), responseCodeElement.InnerText); result.ResponseCodeSpecified = true; result.ResponseClass = ResponseClassType.Error; result.MessageXml = null; return result; }
/// <summary> /// Helper method for examining a response message and throwing an exception if it is an error /// </summary> /// <param name="responseMessage">ResponseMessage to examine</param> /// public static void ThrowIfError(ResponseMessageType responseMessage) { // NOTE: You will need to change this if you want to fail on warnings. // if (responseMessage.ResponseClass == ResponseClassType.Error) { throw new EWSException(responseMessage); } }