Доступ к локальному хосту (Xamarin)
Я хочу реализовать чат в своем приложении для Android с помощью SignalR, и я загружаю этот пример с asp.net: https://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr Но я не может получить к нему доступ через localhost через HubConnection. Я попытался использовать свой IP-адрес и номер порта, но он не работает. У кого-нибудь есть опыт с этим?
Спасибо!
1 ответ
Предполагая, что вашим сервером приложений является 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. Что-то вроде<site name="YourAppName" id="1">...</site>
, Вы увидитеlocalhost
привязка по умолчанию. Добавьте новый с фактическим IP:<binding protocol="http" bindinginformation="*:port:x.x.x.x"></binding>
(убедитесь, что IP / порт правильный. То есть:*:57457:192.168.0.57
)Перезапустите IIS Express и повторите попытку (перезагрузка системы не требуется)