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