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.

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

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