Эмулятор Android на IIS Express не работает, но работает с Cassini - PullRequest
13 голосов
/ 31 мая 2011

Я пытаюсь опубликовать данные из приложения Android, работающего в эмуляторе Android на моем локальном компьютере, в веб-приложение, работающее под управлением IIS Express, также работающее на моем локальном компьютере. К сожалению, когда я отправляю сообщение в эмулятор 10.0.2.2, я получаю сообщение об ошибке Host Not Found.

Если я настраиваю веб-приложение для запуска под ASP.NET Dev Server (Cassini) вместо IIS Express, приложение Android сможет публиковать без проблем. Какая конфигурация у меня отсутствует для IIS Express, которая не позволяет работать с обратной связью из эмулятора Android?

Ответы [ 4 ]

18 голосов
/ 23 сентября 2013

Предоставьте себе разрешение на привязку к сетевым адаптерам, отличным от localhost, и настройте IIS Express для привязки ко всем адаптерам.

Затем IIS Express будет принимать подключения от эмулятора Android через 10.0.2.2.Если вы добавите правило в брандмауэр, вы также можете выставить IIS Express в своей сети, что снижает безопасность, но полезно для тестирования физических устройств.

Сведения о шагах: (они предполагают портномер 5555 - используйте вместо этого свой реальный порт)

  1. Запустите это из командной строки от имени администратора:

    netsh http add urlacl url=http://*:5555/ user="NT AUTHORITY\INTERACTIVE"

  2. В % USERPROFILE% \ Documents \ IISExpress \ config \ applicationhost.config замените привязку localhost вашего сайта на bindingInformation="*:5555:*".Результат должен выглядеть следующим образом:

    <site name="..." id="...">
        <!-- application settings omitted for brevity -->
        <bindings>
            <binding protocol="http" bindingInformation="*:5555:*" />
        </bindings>
    </site>
11 голосов
/ 18 октября 2014

Добавьте следующую строку в конфигурационный файл IIs (например, c: \ Users [Ваше имя] \ Documents \ IISExpress \ config \ applicationhost.config). При необходимости измените порт 8085.

<binding protocol="http" bindingInformation="*:8085:127.0.0.1" />

так что ваш файл конфигурации будет выглядеть примерно так

<bindings>
<binding protocol="http" bindingInformation="*:4396:localhost" />     // the existing one
<binding protocol="http" bindingInformation="*:8085:127.0.0.1" />     // new line
</bindings>

теперь вы можете вызывать свой веб-сервис удаленно, позвонив на порт 8085

ex from android emu.
new HttpPost("http://10.0.2.2:8085");
7 голосов
/ 01 июня 2011

По умолчанию IIS Express принимает подключения только от localhost. Чтобы разрешить подключения с удаленных устройств (и эмулятор считается как таковой), используйте инструкции из здесь .

Короче говоря:

netsh http add urlacl url=http://[machinename]:[port]/ user=everyone
netsh http delete urlacl url=http://[machinename]:[port]/

Замените [machinename] и [port] именем вашего компьютера (или нелокальным IP-адресом), и порт IIS Express будет работать.

Также см. Этот вопрос и этот один .

0 голосов
/ 10 декабря 2014

Вот мое решение: Я использую Visual Studio Express 2013 для Web, и мой веб-сервис RESTful работает на IIS Express. Когда я пытался получить доступ к своему веб-сервису с помощью эмулятора Android на той же машине, он выдал мне эту недопустимую ошибку имени хоста. Как следует из приведенных выше ответов, я добавил новые привязки в мой файл applicationhost.config, но все равно он не работал. Наконец-то я смог решить эту проблему, запустив Visual Studio «от имени администратора».

...