none
Как обратиться к api из программы , запущенной на том же сервере, где расположена api RRS feed

  • Вопрос

  • Доброго времени суток

    Есть программа и api написанные на Blazor, которые работают под iis на одном сервере. Если в запросе данных из api в тексте основной программы uri задаётся такой строкой:

    req.RequestUri = new Uri("http://localhost:8080/gps");

    то данные получаются нормально. Если указать внешний адрес самого сервера "212. ...", то при запросе возникает ошибка.
    Я думаю если бы api была в другой сети, то ошибки бы не было . Как сделать правильно в рассматриваемом случае?

    P.S. 

        private async Task getJSON()
        {
           
            HttpRequestMessage req = new HttpRequestMessage();
            req.Method = new HttpMethod("GET");
            req.RequestUri = new Uri("http://212.109.2.109:8080/gps");  //
            req.Content = new StringContent("123");
            req.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
            int i=0;
            try{     
                var response = await Http.SendAsync(req);
                var responseCode = response.StatusCode;
                currJson = await response.Content.ReadAsStringAsync();
            }
            catch (Exception ex)
            {
                JSRuntime.InvokeVoidAsync("alertMsg", "In await send getJSON: "+ ex.Message);
            }
            int pos = currJson.IndexOf("coordinates");
            currLatLon = currJson.Substring(pos + 14, 10);
            JSRuntime.InvokeAsync<object>("refreshJSON", currJson);//.ConfigureAwait(false);
            InvokeAsync(() =>
            {
                StateHasChanged();
            });
        }

    Ошибка :

     "Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение."

    • Изменено ATerentjev 12 марта 2020 г. 14:09
    12 марта 2020 г. 13:00

Все ответы

  • Дополните текст вопроса сведениями об ошибке. Ошибок бывает много и гадать сложно с какой столкнулись.
    12 марта 2020 г. 13:17
  • Сообщение из Postman когда он запущен на том же сервере и обращается через внешний адрес:

    12 марта 2020 г. 14:52
  • В коде лучше спрятать IP, если это не тестовые данные. Грубо говоря любой Get запрос - это строка браузера, он отлично выполняется. Вот мой код WPF C# на получение данных:

                string mes = "";
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://*.*.*.*:8080/gps");
                HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();
                using (StreamReader stream = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                {
                    mes = stream.ReadToEnd();
                }
    Нормально вернул данные. Возможно Ваш запрос сформирован не корректно, мне не удалось его простым копированием запустить, так что нашла быстро код и опробовала его.

    12 марта 2020 г. 15:55
  • У вас IIS какой, не Express случайно? Если полная версия, то посмотрите реализованы ли привязки IP настройках.

    Сделаем содержимое сообщества лучше, вместе!

    27 марта 2020 г. 18:02
    Модератор