Azure 移动服务离线同步
Azure mobile services offline synchronisation
我正在尝试从 Xamarin.iOS 应用程序进行一些离线同步。当我在 IMobileServiceSyncTable 上调用 PullAsync 时,调用从不 returns.
我试过使用常规的 IMobileServiceTable,它似乎工作正常。同步 table 似乎对我不起作用
无效的代码:
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()。但是,我确实在整个链中等待这个电话。这是例如我编写的单元测试具有与上述完全相同的行为。挂起,永远不会 returns.
[Fact]
public async Task GetAllAsync_ReturnsData()
{
var result = await sut.GetAllAsync();
Assert.NotNull(result);
}
更新 2:
我一直在嗅探单元测试发送的请求。它似乎挂起,因为它不断地重复 http 请求数百次并且从未退出该操作。
终于!我找到问题了。
问题是服务器在 GetAll 操作中返回了一个 IEnumerable。相反,它应该是一个 IQueryable
这个问题的答案为我指明了正确的方向
我正在尝试从 Xamarin.iOS 应用程序进行一些离线同步。当我在 IMobileServiceSyncTable 上调用 PullAsync 时,调用从不 returns.
我试过使用常规的 IMobileServiceTable,它似乎工作正常。同步 table 似乎对我不起作用
无效的代码:
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()。但是,我确实在整个链中等待这个电话。这是例如我编写的单元测试具有与上述完全相同的行为。挂起,永远不会 returns.
[Fact]
public async Task GetAllAsync_ReturnsData()
{
var result = await sut.GetAllAsync();
Assert.NotNull(result);
}
更新 2: 我一直在嗅探单元测试发送的请求。它似乎挂起,因为它不断地重复 http 请求数百次并且从未退出该操作。
终于!我找到问题了。
问题是服务器在 GetAll 操作中返回了一个 IEnumerable。相反,它应该是一个 IQueryable
这个问题的答案为我指明了正确的方向