Доступ к локальному хосту (Xamarin)

1

Я хочу реализовать чат в своем приложении Android с помощью SignalR, и я загружаю этот пример из asp.net: https://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr Но я не могу присоединиться к нему, используя localhost через HubConnection. Я попытался использовать мой IP-адрес и номер порта, но он не работает. Кто-нибудь имеет опыт с этим?

Спасибо!

  • 0
    Если у вас есть устройство Android, то localhost - это само устройство Android. Каждое устройство или компьютер - это собственный локальный хост для начала. Поэтому, пожалуйста, объясните ваши настройки лучше.
  • 0
    Спасибо за комментарий. Я использовал IP-адрес своего ПК, но он не работал.
Показать ещё 4 комментария
Теги:
xamarin
signalr

1 ответ

2
Лучший ответ

Предполагая, что ваш сервер приложений - это IIS Express, он по умолчанию не работает из-за ограничений сети или даже брандмауэра.

Прежде всего, как вы уже поняли, клиенту нужно подключиться к вашему ip-устройству, а не к localhost. Что-то вроде http://x.x.x.x:port/signalr

Затем вам нужно убедиться, что ваша машина доступна с мобильного телефона или эмулятора: откройте браузер в телефоне и введите известный адрес, например http://x.x.x.x:port/somethingThatExists.

Если этот URL недоступен:

  • Попробуйте отключить брандмауэр
  • Откройте службу PowerShell на машине, запускающей IIS-Express, и запустите ее: netsh http add urlacl url=http://{your server ip}:{port}/ user=everyone. (если ваш системный язык не является английским, например: испанский, измените "все" на "todos" )

  • Откройте файл applicationhost.config в своем решении Solution/.vs/config/applicationhost.config и найдите приложение xml node. Что-то вроде <site name="YourAppName" id="1">...</site>. По умолчанию привязка localhost вы увидите. Добавьте новый с фактическим ip: <binding protocol="http" bindinginformation="*:port:x.x.x.x"></binding> (убедитесь, что ip/port правильный. I.e: *:57457:192.168.0.57)

  • Перезагрузите IIS Express и повторите попытку (нет необходимости перезагружать систему)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню