Xamarin Android Emulator Web Api localhost

Für Entwicklungszwecke möchte man ab und zu einen lokalen REST Service über eine Xamarin Forms Anwendung ansprechen. Das klappt naturgemäß mit einer Url ala http://localhost:44307/api/imageupload nicht. Localhost verweist ja auf den lokalen Host, also das Android Device. Den ASP.NET Web Api Service betreibt aber der Wirt.

Der Emulator mappt die IP Adresse 10.0.2.2 auf 127.0.0.1 des Host Systems so das ein HttpClient Request nun auf  http://10.0.2.2:12001/api/imageupload  in der Xamarian Forms App funktionieren sollte.

Allerdings wird wenn VIsual Studio verwendet wird der REST Service in IISExpress gemappt, gehostet und gestartet und wir haben wieder die Localhost Situation.

Der in ASP.NET Core dahinterliegende Webserver ist Kestrel. Dieser wird per Code konfiguriert. Fügen Sie Zeile 4 in programm.cs ein.

   1:  public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
   2:       WebHost.CreateDefaultBuilder(args)
   3:      .UseStartup<Startup>()
   4:      .UseUrls("http://127.0.0.1:12001"); //Xamarin Port statt localhost
   5:   

Kestrel muss nun auch gestartet werden was man in Visual Studio oder in der Kommandozeile mit einem dotnet run erreichen kann.

webapicore1

Im Emulator lässt sich nun für Testzwecke die Url aufrufen

image

Im Xamarin Forms Visual Studio Projekt aus dem HttClient natürlich auch.

Kommentare sind geschlossen