/// <summary> /// Анализ ошибок в ответе службы WSL /// </summary> private void Verify(Reply reply, RequestMessage message) { if (reply.ErrorCode != 0) { var errorMessage = string.Format( "{0}: Служба WSL вернула ошибку #{1} \"{2}\". Адрес службы: \"{3}\"", message.GetFormattedMethodName(), reply.ErrorCode, reply.ErrorDescription, uri ); throw new WslException(errorMessage); } }
/// <summary> /// Анализ ошбок /// </summary> private static Reply ParseReply(HttpResult result) { var processedResponse = ProcessResponse(result); var reply = new Reply { Data = processedResponse.Data, ErrorCode = 0 }; if (processedResponse.StatusCode != HttpStatusCode.OK) { reply.ErrorCode = -1; var faultNode = processedResponse.Xml.GetNodeByLocalName("Fault"); if (faultNode != null) { var faultstringNode = faultNode.SelectSingleNode("faultstring"); var reason = faultstringNode != null ? faultstringNode.InnerText : "?"; var faultcodeNode = faultNode.SelectSingleNode("faultcode"); var code = faultcodeNode != null ? faultcodeNode.InnerText : "?"; reply.ErrorDescription = string.Format("FaultException. Code = {0}; Reason = {1};", code, reason); var detailNode = faultNode.SelectSingleNode("detail"); if (detailNode != null) { reply.ErrorDescription += " Detail = " + detailNode.InnerText; } } else { reply.ErrorDescription = "Не удалось получить подробности ошибки"; } } else { var responseNode = processedResponse.Xml.GetNodeByLocalName("return"); reply.Xml = responseNode == null ? null : responseNode.InnerText; } return reply; }