/// <summary> /// Builds an object of type <see cref="FaultException{String}"/> /// </summary> /// <param name="buildFrom"> /// An Object to build the output object from /// </param> /// <param name="uri"> /// The URI. /// </param> /// <returns> /// Object of type <see cref="FaultException{String}"/> /// </returns> public FaultException <SdmxFault> BuildException(Exception buildFrom, string uri) { var faultException = buildFrom as FaultException <SdmxFault>; if (faultException != null) { return(faultException); } var webException = buildFrom as FaultException; if (webException != null) { SdmxFault fault; if (webException.Code.IsReceiverFault) { fault = new SdmxFault(Resources.ErrorInternalError, _errorNumberServer, uri); return(this.CreateExceptionServer(fault)); } fault = new SdmxFault(buildFrom.Message, _errorNumberClient, uri); return(this.CreateExceptionClient(fault)); } var sdmxException = buildFrom.ToSdmxException(); if (sdmxException != null) { return(this.BuildException(sdmxException, uri)); } return(this.CreateExceptionServer(new SdmxFault(Resources.ErrorInternalError, _errorNumberServer, uri))); }
/// <summary> /// Builds an object of type <see cref="FaultException{String}"/> /// </summary> /// <param name="buildFrom"> /// An Object to build the output object from /// </param> /// <param name="uri"> /// The URI. /// </param> /// <returns> /// Object of type <see cref="FaultException{String}"/> /// </returns> public FaultException <SdmxFault> BuildException(Exception buildFrom, string uri) { var faultException = buildFrom as FaultException <SdmxFault>; if (faultException != null) { return(faultException); } var webException = buildFrom as FaultException; if (webException != null) { SdmxFault fault; if (webException.Code.IsReceiverFault) { fault = new SdmxFault(_sdmxErrorCodeIntenalError.ErrorString, _sdmxErrorCodeIntenalError.ClientErrorCode, uri); return(CreateExceptionServer(fault)); } fault = new SdmxFault(buildFrom.Message, _sdmxErrorCodeIntenalError.ClientErrorCode, uri); return(CreateExceptionClient(fault)); } var sdmxException = buildFrom.ToSdmxException(); if (sdmxException != null) { return(this.BuildException(sdmxException, uri)); } return(CreateExceptionServer(new SdmxFault(_sdmxErrorCodeIntenalError.ErrorString, _sdmxErrorCodeIntenalError.ClientErrorCode, uri))); }
/// <summary> /// Builds an object of type <see cref="FaultException"/> /// </summary> /// <param name="buildFrom"> /// An Object to build the output object from /// </param> /// <param name="uri"> /// The URI. /// </param> /// <returns> /// Object of type <see cref="FaultException{String}"/> /// </returns> public FaultException <SdmxFault> BuildException(SdmxException buildFrom, string uri) { _log.ErrorFormat("SdmxError : {0}, code : {1}", buildFrom.SdmxErrorCode.ErrorString, buildFrom.SdmxErrorCode.ClientErrorCode); _log.Error(buildFrom.FullMessage, buildFrom); var sdmxFault = new SdmxFault(buildFrom.SdmxErrorCode.ErrorString, buildFrom.SdmxErrorCode.ClientErrorCode, uri); if (buildFrom.SdmxErrorCode.EnumType.IsClientError()) { return(CreateExceptionClient(sdmxFault)); } return(CreateExceptionServer(sdmxFault)); }
/// <summary> /// Handle a SOAP Fault from the WS. It will parse the soap details and throw an NsiClientException /// </summary> /// <param name="ex"> /// The soap fault /// </param> /// <exception cref="NsiClientException"> /// It is always thrown /// </exception> public static void HandleSoapFault(WebException ex) { var error = new StringBuilder(Resources.ExceptionServerResponse); error.AppendLine(ex.Message); if (ex.Response != null) { if (ex.Response is HttpWebResponse && ((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.Unauthorized) { throw new DataflowException(Resources.NoResultsFound); } error.AppendLine(Resources.ExceptionReceivedSoapFault); XmlDocument fault = null; using (Stream stream = ex.Response.GetResponseStream()) { if (stream != null) { fault = new XmlDocument(); fault.Load(stream); // error.Append(fault.InnerText); } } //Hahaha Production flag. This is due to poor design of app, NSI WS, DR and SR if (fault != null) { SdmxFault sdmxFault = SdmxFault.GetErrorNumber(fault); if (sdmxFault.ErrorNumber == 110 || sdmxFault.ErrorMessage.Equals(Resources.Unauthorized, StringComparison.OrdinalIgnoreCase) || sdmxFault.ErrorMessage.Equals(Resources.NoResultsFound, StringComparison.OrdinalIgnoreCase)) { throw new DataflowException(Resources.NoResultsFound); } } } Logger.Error(error.ToString()); Logger.Error(ex.Message, ex); throw new NsiClientException(error.ToString(), ex); }
/// <summary> /// Creates the exception server. /// </summary> /// <param name="sdmxFault"> /// The SDMX fault. /// </param> /// <returns> /// The <see cref="FaultException"/>. /// </returns> private FaultException <SdmxFault> CreateExceptionServer(SdmxFault sdmxFault) { return(new FaultException <SdmxFault>(sdmxFault, this._faultReasonServer, FaultCodeDefaults.Server)); }
/// <summary> /// Creates the exception client. /// </summary> /// <param name="sdmxFault"> /// The SDMX fault. /// </param> /// <returns> /// The <see cref="FaultException"/>. /// </returns> private FaultException <SdmxFault> CreateExceptionClient(SdmxFault sdmxFault) { return(new FaultException <SdmxFault>(sdmxFault, this._clientFaultReason, FaultCodeDefaults.Client)); }
/// <summary> /// The create exception server. /// </summary> /// <param name="sdmxFault"> /// The sdmx fault. /// </param> /// <returns> /// The <see cref="FaultException"/>. /// </returns> private static FaultException <SdmxFault> CreateExceptionServer(SdmxFault sdmxFault) { var faultReason = new FaultReason(sdmxFault.ErrorMessage); return(new FaultException <SdmxFault>(sdmxFault, faultReason, FaultCodeDefaults.Server)); }