Отладка приложения 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]