2017-02-02 2 views
0
내가 통해 윈도우 안드로이드 에뮬레이터에서 로컬 호스트에 액세스 할 수 있습니다 이해

10.0.2.2 : PORTNUMBER (나는이 웹 API의 서비스 실행에 액세스해야합니다 VS2015에서 개발중인 Xamarin 앱의 로컬 호스트). 안드로이드 윈도우 에뮬레이터에서 로컬 호스트에 액세스 할 수 없습니다 (비주얼 스튜디오 2015/자 마린)

https://s23.postimg.org/calomedq3/localhost.jpg

내 연구에 따르면,이 작업을해야한다 : 나는 웹 API의 서비스가 로컬 호스트를 통해 확인을 실행 확인할 수 있습니다

는하지만 안드로이드 에뮬레이터에서이 스크린 샷은 문제를 요약 한 것입니다. 내가 뭘 놓치고 있니? 많은 감사합니다.

screenshot

+0

은 방화벽에서 열린 포트입니까? –

+0

127.0.0.1 대신 IP (10.0.2.2)를 사용하여 브라우저에서 API에 액세스 할 수 있습니까? –

+0

나는이 문제를 이해하고 있는지 확실하지 않거나 명확하게 표현하지 못했습니다. 10.0.2.2는 Android VM 내에서 로컬 호스트 (즉 내 개발 시스템)에 액세스하기 위해 Google의 Android 팀에서 구현 한 특수 별칭입니다. 따라서 10.0.2.2의 로컬 호스트에서 실행되는 브라우저 (예 : 스크린 샷)에서 'localhost'또는 127.0.0.1 만 사용하여 API에 액세스 할 수 없습니다. 그 반대의 경우는 Aandroid VM에서 브라우저를 실행하면 true입니다. 'localhost'또는 127.0.0.1은 인스턴스가 에뮬레이터 내에서 실행되고 로컬 네트워크가 아닌 가상 라우터에 액세스 할 수 있으므로 의미가 없습니다. –

답변

1

OK, 나는 'ngrok'(ngrok는 웹 서버가 인터넷에 로컬 컴퓨터에서 실행중인 노출 수)로 웹 API에 액세스 할 수 있었다.

https://ngrok.com/docs#expose

이 아마 이상적인 해결책은 아니지만, 잘 작동하는 것 같다. 다시 말하자면, Web API를 호스트하기 위해 개발 컴퓨터에서 IIS를 사용하지 않고 기본 로컬 호스트에서 실행중인 Kestrel을 사용합니다 : 5000

보조 노트로 http://169.254.80.80/도 작동하는 것으로 보이지만 기본 ISS 웹 사이트로 이동합니다. . 따라서 Kestrel로 리다이렉트하는 새로운 IIS 사이트를 설정하거나 웹 API의 o ISS를 실행하여 간단하게 작동시킬 수 있습니다 (Kestrel의 전체적인 포인트는 Kestrel이 많이 최적화 된 ISS를 피하는 것입니다). 어쨌든, ngrok는 잘 작동하는 것처럼 보입니다. 그래서 나는 더 많은 시간을 가지고 대안을 볼 때까지 아마 그걸 남길 것입니다.

+0

물론 ISS가 아니라 IIS를 의미합니다. –

0

최종 솔루션 업데이트 :

나는 그것이 (MS) 안드로이드 에뮬레이터에 169.254.80.80을 통해 작동하도록 관리.

Kestrel을 통해서만 작동하도록 만들 수는 없었습니다. (이것들은 .NET Core API입니다), 포트 80에서 IIS 내부에서 Kestrel을 실행해야만했습니다.

관련 문제