HttpClient.GetAsync kehrt auf Xamarin.Android @ nie zurü
Ich arbeite an einer Android-Anwendung, die von einer auf Azure gehosteten ASP.NET Core-Anwendung gesichert wird. Ich verwende ein Shared Library-Projekt, um grundlegende Dinge in einem Konsolenanwendungsprojekt zu testen, bevor ich die Funktionen für das Xamarin.Forms-Projekt (nur für Android) erstelle.
Der folgende Code wird ausgeführtnac Einloggen in den Webservice, wobeiClient
ist einHttpClient
:
public static async Task<MyClass> GetInformationAsync(string accountId)
{
HttpResponseMessage response = await Client.GetAsync(UriData + "/" + accountId);
response.EnsureSuccessStatusCode();
string responseContent = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<MyClass>(responseContent);
}
Unter demselben Computer / Netzwerk wird der Code in weniger als einer Sekunde in der Konsolenanwendung beendet. Er wird jedoch in der @ -Anwendung nie beendet (es wurde sogar eine Minute gewartetXamarin.Forms.Android
project.
Ich finde das seltsam, da sich der Android-Client mit @ erfolgreich beim Webdienst anmelden kanPostAsync
.
Es gibt jedoch einen Unterschied, wie der Android-Client und der Konsolen-Client @ aufrufeGetInformationAsync
.
Während der Console-Client es asynchron aufruft:
private static async void TestDataDownload()
{
...
var data = await WebApiClient.GetInformationAsync(myId);
}
Der Android-Client ruft es synchron auf
public void MainPage()
{
...
var data = WebApiClient.GetInformationAsync(myId).Result;
}