Azure移动服务脱机同步
问题描述:
我想从Xamarin.iOS应用程序做一些脱机同步。当我在IMobileServiceSyncTable上调用PullAsync时,调用永远不会返回。Azure移动服务脱机同步
我试过了一个正常的IMobileServiceTable,这似乎工作正常。同步表似乎是这里的东西不为我工作不工作
代码:,工程
var client = new MobileServiceClient(ApiUrl);
var store = new MobileServiceSQLiteStore("syncstore.db");
store.DefineTable<Entity>();
await client.SyncContext.InitializeAsync(store);
table = client.GetSyncTable<Entity>();
try
{
await table.PullAsync("all", table.CreateQuery());
}
catch (Exception e)
{
Debug.WriteLine(e.StackTrace);
}
return await table.ToListAsync();
代码:
var client = new MobileServiceClient(configuration.BaseApiUrl);
return await table.ToListAsync();
任何人都可以指出的东西这似乎是错误的?我没有得到任何例外,或者没有任何指向我的方向 - 它从来没有完成过。
更新1: 看到一些其他的SO问题,因为他们的调用堆栈中的某个地方没有等待,而是执行了Task.Result或Task.Wait()。不过,我在整个连锁店都等待着这个电话。例如,我写的一个单元测试,它具有与上述完全相同的行为。挂起,并永不返回。
[Fact]
public async Task GetAllAsync_ReturnsData()
{
var result = await sut.GetAllAsync();
Assert.NotNull(result);
}
更新2: 我一直嗅探通过单元测试发送请求。它似乎挂起了,因为它不断地执行http请求,并且不断退出该操作。
答
终于!我发现了这个问题。
问题是服务器在GetAll操作中返回了IEnumerable。相反,它应该已经在这个问题一个IQueryable
答案我指出了正确的方向
IMobileServiceClient.PullAsync deadlock when trying to sync with Azure Mobile Services