Проверьте несколько конечных точек с помощью кодов состояния HTML, прежде чем произойдет сбой при использовании веб-службы asmx C # - PullRequest
0 голосов
/ 11 сентября 2018

В настоящее время я использую веб-сервис, который предлагает 2 конечных точки в качестве резервных копий при сбое.Мне нужно протестировать все 2 конечные точки, прежде чем мой код полностью потерпит неудачу, а затем нужно будет зарегистрировать исключение.Я думал о том, чтобы вернуть код состояния ответа HTML, используя это:

Function1:

public string   ValidateHttpRequest(string endpointUrl)
    {
        try
        {
            var url = endpointUrl;
            HttpClient httpClient = new HttpClient();
            var reponse = httpClient.GetAsync(endpointUrl);
            return reponse.Result.StatusCode.ToString();

        }
        catch (Exception ex)
        {
            Log.Log("exception thrown in ValidateHttpRequest()!  " + ex.ToString());
            Log.Log(ex);
            return null;

        }
    }

Это вызывается из другой функции, скажем function2 (().

Функция 2:

 private bool function2()
        {

            //Specify the binding to be used for the client.
            BasicHttpsBinding binding = new BasicHttpsBinding();

            var epA = "https://www1.endpoint1.com/endpointService.asmx";
            var epB = "https://www2.endpoint1.com/endpointService.asmx";


            if (ValidateHttpRequest(epA)== "OK")
            {
                EndpointAddress address = new EndpointAddress("https://www1.enpoint1.com/endpointService.asmx");
                _Client = new WebService.SoapClient(binding, address);
                return true;
            }
            else if ((ValidateHttpRequest(epB))== "OK")
            { 

               EndpointAddress address2 = new EndpointAddress(("https://www2.enpoint2.com/endpointService.asmx")); 
         else
            {
                 // Now Log error here completely, and only fail here if both above checks return anything apart from 200 status code     

                LogException(“Only log exception if all endpoints fail”);
                return false;
            }

        }

Это все хорошо, но мне нужно, чтобы это не сбой при первом вызове, так как мне нужно будетпроверьте, является ли другая конечная точка действительной / активной.Проблема в том, что если ответ нулевой, исключение обрабатывается, и я не буду проверять остальные мои конечные точки, как я могу правильно убедиться, что мой код безопасен, то есть исключения обрабатываются правильно, но продолжаю мой код проверять все конечные точки передполностью провал и остановка исполнения.он должен потерпеть неудачу, если я получу любой другой ответ, кроме 200 ОК. Я исследовал, как проверить HTTP-ответ, и все, что я могу придумать, - это, но он не полностью соответствует моим потребностям. Если кто-то может указать мне вправильное направление или помощь с решением, я был бы очень признателен.Заранее спасибо

...