Отладка приложения ASP.NET MVC на телефоне Android

Цель

Я ищу простейший пошаговый процесс установки для отладки моего приложения ASP.NET MVC 4 с использованием моего IP-адреса в качестве URL-адреса. Я хочу иметь доступ к приложению с моего телефона Android, который подключен к локальной сети через Wi-Fi, используя локальный IP-адрес моего компьютера (например, - http://192.168.1.109:25968). Я запускаю Visual Studio 2012 RC на Windows 7.

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

Информация об установке

Проект - это только интернет-приложение ASP.NET MVC 4 по умолчанию. Я почти уверен, что ничего не изменил.

Вкладка "Веб" в приложении "Свойства" установлена ​​в "Использовать локальный веб-сервер IIS", и я проверил "Использовать IIS Express". URL-адрес проекта http://localhost:25968/. Я вижу, что "locahost" может быть проблемой, но VS не позволит мне помещать IP-адрес или wild cards.

Мой файл приложения IIS Express application.host.config для моего приложения выглядит следующим образом.

<site name="APPLICATION_NAME" id="13">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\USERNAME\Documents\Visual Studio 11\Projects\APPLICATION_NAME" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:25968:localhost" />
    </bindings>
</site>

Что происходит

Когда я подключаюсь к сайту с главного компьютера с помощью http://localhost:25968, он отлично работает. Если я попытаюсь использовать http://192.168.1.109:25968 с главного компьютера, я получаю "Неверный запрос - неверное имя хоста, ошибка HTTP 400. Имя хоста запроса недействительно". Используя этот же URL-адрес с другого компьютера в сети, он просто отключается.

Ответ 1

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

Детали шага: (они предполагают номер порта 5555 - вместо этого используйте ваш фактический порт)

  • Запустите эти команды из командной строки в качестве администратора:

    netsh http add urlacl url=http://localhost:5555/ user="NT AUTHORITY\INTERACTIVE"
    netsh http add urlacl url=http://*:5555/ user="NT AUTHORITY\INTERACTIVE"
    
  • В .vs\config\applicationhost.config(или для pre-VS2015,% USERPROFILE%\Documents\IISExpress\config\applicationhost.config) добавьте привязку подстановки к вашему сайту. Результат должен выглядеть следующим образом:

    <site name="..." id="...">
        <!-- application settings omitted for brevity -->
        <bindings>
            <binding protocol="http" bindingInformation="*:5555:localhost" />
            <binding protocol="http" bindingInformation="*:5555:*" />
        </bindings>
    </site>
    
  • Откройте порт брандмауэра для вашего сайта IIS Express. Вы можете сделать это из командной строки администратора:

    netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=5555 profile=private remoteip=localsubnet action=allow
    

Ответ 2

Сделайте снимок:

netsh http add urlacl url=http://192.168.1.109:25968/ user=everyone

От: http://johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer

Возможно, вы сможете заменить имя компьютера на свой IP-адрес, поэтому вам не нужно повторно запускать его при каждом изменении вашего IP-адреса.

Ответ 3

Мне нужно было выполнить все шаги из ссылки, предоставленной cfeduke. (Не только тот, который он описывает в своем ответе.)

  • Добавить <binding protocol="http" bindingInformation="*:58938:192.168.1.42" /> в applicationhost.config после привязки для 'localhost'.
  • Выполнить netsh http add urlacl url=http://192.168.1.42:58938/ user=everyone
  • Запустить netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=58938 profile=private remoteip=localsubnet action=allow

Ответ 4

Если вы получили Node.js на своей машине Попробуйте этот инструмент: Ionut-Cristian Florescu

https://github.com/icflorescu/iisexpress-proxy

Чтобы установить его, просто напишите в командной строке npm install -g iisexpress-proxy

Затем проверьте порт, который у вас есть в вашем проекте, и сопоставьте его с внешним портом. iisexpress-proxy [localPort] to [proxyPort]