public virtual void ExecuteQuery(HttpWebRequest _httpWebRequest) { string serverAnswer = string.Empty; if (_httpWebRequest == null) { ActionCode = ActionResultCode.Error_WebConnection; return; } try { using (HttpWebResponse _httpWebResponse = (HttpWebResponse)_httpWebRequest.GetResponse()) { this.ActionHttpStatusCode = _httpWebResponse.StatusCode; this.ResponceHeaders = _httpWebResponse.Headers; using (System.IO.StreamReader sr = new System.IO.StreamReader(_httpWebResponse.GetResponseStream())) { serverAnswer = sr.ReadToEnd(); ProcessResult(serverAnswer); } } } catch (WebException wex) { this.ActionCode = ActionResultCode.Error_WebConnection; if (wex.Response != null) { wex.Response.Close(); this.ActionHttpStatusCode = ((HttpWebResponse)wex.Response).StatusCode; if (this.ActionHttpStatusCode == HttpStatusCode.Forbidden) { this.ActionCode = ActionResultCode.Error_AuthError; } else if (this.ActionHttpStatusCode == HttpStatusCode.NotFound) { this.ActionCode = ActionResultCode.Error_WrongPanelPath; } } else { if (wex.Status == WebExceptionStatus.Timeout) { this.ActionCode = ActionResultCode.Error_ServerTimeout; } this.ErrorMessage = wex.Message; } } catch (Exception ex) { this.ActionCode = ActionResultCode.Error_InternalProgramError; this.ErrorMessage = string.Format("\r\nПроизошла внутреняя ошибка приложения: {0}\r\n----------------------\r\n", ex.Message); this.ErrorMessage += string.Format("Стек вызовова на момент возникновения ошибки: {0}\r\n----------------------\r\n", ex.StackTrace); if (!string.IsNullOrEmpty(serverAnswer)) { this.ErrorMessage += string.Format("Ответ сервера: {0}\r\n----------------------\r\n", serverAnswer); } } }
protected static TResult ErrorResult <TResult>(ActionResultCode resultCode, string errorMessage, params object[] args) where TResult : ActionResult, new() { var actionResult = new TResult { Status = resultCode, Message = string.Format(errorMessage, args) }; GetLog().LogError(actionResult.Message); return(actionResult); }
protected void ProcessResult(string _result) { if (this.ActionHttpStatusCode == HttpStatusCode.Forbidden) { this.ActionCode = ActionResultCode.Error_AuthError; return; } else if (this.ActionHttpStatusCode == HttpStatusCode.NotFound || this.ActionHttpStatusCode == HttpStatusCode.MovedPermanently || this.ActionHttpStatusCode == HttpStatusCode.Moved || this.ActionHttpStatusCode == HttpStatusCode.Found) { this.ActionCode = ActionResultCode.Error_WrongPanelPath; return; } if (string.IsNullOrEmpty(_result)) { if (this.ReturnType != ActionResultType.Any && this.ReturnType != ActionResultType.PlainText) { this.ActionCode = ActionResultCode.Error_EmptyServerAnswer; } return; } if (this.ReturnType != ActionResultType.Any && this.ReturnType != ActionResultType.PlainText) { _result = _result.Trim(); if (this.ReturnType == ActionResultType.Xml) { if (_result.StartsWith("<?xml")) { XmlDocument xml = new XmlDocument(); xml.LoadXml(_result); ProcessXmlResult(xml); } else { this.ActionCode = ActionResultCode.Error_InvalidServerAnswer; this.ErrorMessage = _result; } } } else { ProcessTextResult(_result); } }
/// <summary> /// Initializes a new instance of the <see cref="ActionResult"/> class. /// </summary> /// <param name="statusCode">The status code.</param> /// <param name="resultCode">The results.</param> internal ActionResult(ExternalInterface.ResponseStatus.Types.StatusCode statusCode, ExternalInterface.ActionResult.Types.ActionResultCode resultCode) { StatusCode = statusCode.Convert(); Result = resultCode.Convert(); }
/// <summary> /// Initializes a new instance of the <see cref="ActionResult"/> class. /// </summary> /// <param name="statusCode">The status code.</param> /// <param name="results">The results.</param> internal ActionResult(ExternalInterface.ResponseStatus.Types.StatusCode statusCode, ExternalInterface.ActionResult.Types.ActionResultCode results) { StatusCode = (StatusCode)statusCode; Result = (ActionResultCode)results; }
public void SetInternalProgramError(string errorMessage) { this.ActionCode = ActionResultCode.Error_InternalProgramError; this.ErrorMessage = errorMessage; }