【发布时间】:2016-06-29 00:49:06
【问题描述】:
我正在开发一个由 Azure 上托管的 ASP.NET Core 应用程序支持的 Android 应用程序。在为 Xamarin.Forms(仅限 Android)项目创建功能之前,我正在使用共享库项目来测试控制台应用程序项目上的基本内容。
以下代码在登录到 Web 服务后运行,其中Client 是HttpClient:
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 成功登录到 Web 服务。
但是,Android 客户端和控制台客户端调用GetInformationAsync 的方式有所不同。
当控制台客户端异步调用它时:
private static async void TestDataDownload()
{
...
var data = await WebApiClient.GetInformationAsync(myId);
}
Android客户端同步调用
public void MainPage()
{
...
var data = WebApiClient.GetInformationAsync(myId).Result;
}
【问题讨论】:
-
你使用的是本地主机还是本地IP地址?
-
@AthulHarikumar Web 服务托管在 Azure Web Apps 的免费实例上
标签: c# android xamarin asp.net-core