Я работаю над приложением Android, подкрепленным приложением ASP.NET Core, размещенным на Azure. Я использую общий проект библиотеки для тестирования базовых материалов в проекте Console Application, прежде чем создавать функции для проекта Xamarin.Forms (только для Android).
Следующий фрагмент кода выполняется после входа в веб-сервис, где Client
является HttpClient
:HttpClient.GetAsync никогда не возвращается на Xamarin.Android
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);
}
В рамках того же компьютера/сети, код заканчивается менее чем второй на консольное приложение , однако он никогда не заканчивается (даже ждал минуты) в проекте Xamarin.Forms.Android
.
Я нахожу это странным, так как клиент Android может успешно войти в веб-службу, используя PostAsync
.
Однако существует разница в том, как клиент Android и клиент консоли вызывают GetInformationAsync
.
Пока клиент консоли вызывает его асинхронно:
private static async void TestDataDownload()
{
...
var data = await WebApiClient.GetInformationAsync(myId);
}
Клиент Android называет это синхронно
public void MainPage()
{
...
var data = WebApiClient.GetInformationAsync(myId).Result;
}
Вы используете локальный хост или локальный адрес? –
@AthulHarikumar веб-служба размещена на бесплатном экземпляре Azure Web Apps –