Intereting Posts
Не удается найти файл .android на моем mac, чтобы получить ключ карты? Как отправить несколько значений на веб-сервер сразу Gradle error: Минимальная поддерживаемая версия Gradle – 3.3. Текущая версия – 3.2 Что такое подходящая замена для Android ActionBar? Загружать локальный файл html в webview android Запуск gradle -v возвращает «JAVA_HOME установлен в недопустимый каталог», хотя у меня есть действительный JAVA_HOME Android ScrollView и кнопки внизу экрана Какова основная разница между сбросом и сокращением в Котлине? Когда использовать какой? Слабая ссылка для обратной связи с сетью? Как обновить виджеты из службы? Максимальный размер видео может быть добавлен в необработанную папку с андроидом? Глобальный виджет быстрого поиска Google, отсутствующий в Android 2.2 Android с кнопкой NumericUpDown? Правильное расширение LinearLayout для создания пользовательского представления Открыть .txt-приложение из электронной почты в приложении Android

Net :: ERR_CONNECTION_REFUSED ионный

Я разрабатываю приложение с использованием ионных, я мог бы получать данные с моего сервера webApi и отображать их в навигаторе с помощью ionic serve но когда я пытаюсь выполнить его на эмуляторе: ionic run android -l -c я получаю эту ошибку: net::ERR_CONNECTION_REFUSED

Введите описание изображения здесь

Странно, что область $ содержит необходимые данные, и я могу их зарегистрировать.

Скорее всего, локальный хост на устройстве / эмуляторе Android не разрешает IP вашего компьютера / сервера разработки. Localhost, вероятно, указывает на устройство / эмулятор. Можете ли вы направить фактический IP-адрес своего компьютера? Или вы можете разместить веб-службу где-нибудь в облаке и попробовать?

Спасибо, Дэн

Поскольку приложение cordova загружается из файловой системы устройства, оно имеет другое происхождение, чем веб-api. Приложение пытается вызвать веб-api, но это запрещено Политикой одного и того же происхождения . Чтобы преодолеть эту проблему, вам необходимо включить CORS на свой веб-сайт.

Чтобы включить CORS, вам необходимо установить пакет Microsoft.AspNet.WebApi.Cors NuGet и использовать атрибут EnableCors . Например:

 using System.Collections.Generic; using System.Web.Http; using System.Web.Http.Cors; using WebApiServer.Models; namespace WebApiServer.Controllers { [RoutePrefix("databases")] [EnableCors("*", "*", "*")] public class DatabasesController : ApiController { [Route("")] [HttpGet] public IHttpActionResult Get() { var databases = new List<DatabaseCategory>() { new DatabaseCategory { CategoryName = "Bases de datos relacionales", Databases = new List<Database>() { new Database() { DatabaseName = "SQL Server" }, new Database() { DatabaseName = "Oracle" }, new Database { DatabaseName = "PostgreSQL" } } }, new DatabaseCategory { CategoryName = "Bases de datos NoSQL", Databases = new List<Database>() { new Database() { DatabaseName = "RavenDB" }, new Database { DatabaseName = "CouchBase" }, new Database { DatabaseName = "MongoDB" } } } }; return Ok(databases); } } } 

Если приложение, запущенное на устройстве (эмулированное или физическое), вызывает http: // localhost: 26309 / databases, он пытается подключиться к порту 26309 на устройстве itseft, а не на машине разработчика, на которой запущен веб-api. Таким образом, вы получаете ERR_CONNECTION_REFUSED , потому что никто на устройстве не прослушивает этот порт.

Поэтому вместо использования http://localhost:26309 вы должны использовать свой IP-адрес разработчика или DNS-имя, которое разрешает его. Например, http://192.168.8.162:26309 или http://yourMachine.yourDomain.com:26309 . Но тогда вы столкнетесь с другой проблемой, ваш веб-api работает на веб-сервере разработки IIS Express, который не позволяет удаленные подключения. Он может быть настроен для разрешения удаленных подключений, но тогда вам придется выполнять Visual Studio в качестве администратора. Лучшее решение – установка IIS и настройка его на поведение как обратного прокси. Это можно сделать в Windows 10 Pro, установив URL rewrite и ARR и настроив его :

  1. Сначала установите IIS, перейдите на панель управления, включите или включите функции Windows, включите службы информации Интернета.
  2. Установите URL-адрес Rewrite 2.0 отсюда
  3. Установите приложение Request Routing 3.0 отсюда
  4. Откройте диспетчер служб Интернета
  5. Добавить веб-сайт. Укажите имя сайта и физический путь. В разделе «Связывание» укажите порт 26308 (мое личное соглашение: порт IIS Express – 1). Оставьте имя хоста пустым.
  6. Нажмите на вновь созданный веб-сайт. На правой панели откройте «URL Rewrite»
  7. На панели «Действия» нажмите «Добавить правило», выберите «Обратный прокси»,
  8. Напишите localhost: 26309 в текстовом поле «Введите имя сервера или IP-адрес …»
  9. Нажмите ОК.
  10. Добавьте правило исключения для TCP-порта 26308 в брандмауэр Windows.

Теперь вам нужно изменить ваше приложение cordova, чтобы отправлять запросы на вновь созданный веб-сайт в IIS. Он должен сделать запросы к http://192.168.8.162:26308 или http://yourMachine.yourDomain.com:26308

Таким образом, вы можете одновременно отлаживать приложение cordova и приложение api для веб-приложений, я имею в виду, что вы можете добавить точки останова для обоих. Он работает для эмулируемых устройств, а также для физических устройств, подключенных к USB. Вам понадобится правильный Wi-Fi, доступный вашей машиной и устройством разработки.

Эта ошибка может произойти из-за нескольких причин.

Убедитесь, что URL-адрес, который вы пытаетесь получить, действителен или нет.

Затем убедитесь, что вы включили CORS в своем бэкэнд-приложении. Для этого используйте Microsoft.AspNet.WebApi.Cors или если вы используете OWIN, а затем в конфигурации startup.cs, используйте app.UseCors (Microsoft.Owin.Cors.CorsOptions.AllowAll) (это происходит от Microsoft.Owin.Cors )

После того, как вы это сделаете, перейдите в свой web.config и введите следующие вещи:

 <system.webServer> <httpProtocol> <customHeaders> <clear/> <add name="Access-Control-Allow-Credentials" value="true"/> </customHeaders> </httpProtocol> </system.webServer> 

Это решит проблему.