MobileServicePushFailedException Azure Android
我正在为我的Android应用程序实施移动服务,以连接到azure。我已经完成了离线同步教程,效果很好 我现在尝试在我的应用程序中使用不同的表实现相同的方法,但我得到了一个Push异常。有趣的是,它仍然被插入在线数据库。有人知道为什么会这样吗 作为测试,我在ToDoItem项目中实现了相同的类、表等,没有错误 以下例外情况MobileServicePushFailedException Azure Android,android,azure,android-asynctask,synchronization,azure-mobile-services,Android,Azure,Android Asynctask,Synchronization,Azure Mobile Services,我正在为我的Android应用程序实施移动服务,以连接到azure。我已经完成了离线同步教程,效果很好 我现在尝试在我的应用程序中使用不同的表实现相同的方法,但我得到了一个Push异常。有趣的是,它仍然被插入在线数据库。有人知道为什么会这样吗 作为测试,我在ToDoItem项目中实现了相同的类、表等,没有错误 以下例外情况 W/System.err: java.util.concurrent.ExecutionException: com.microsoft.windowsazure.mobil
W/System.err: java.util.concurrent.ExecutionException: com.microsoft.windowsazure.mobileservices.table.sync.push.MobileServicePushFailedException
W/System.err: at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299)
W/System.err: at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286)
W/System.err: at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
W/System.err: at com.heathrow.ecms.DatabaseAccess$3.doInBackground(DatabaseAccess.java:2178)
W/System.err: at com.heathrow.ecms.DatabaseAccess$3.doInBackground(DatabaseAccess.java:2173)
W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:292)
W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err: at java.lang.Thread.run(Thread.java:818)
W/System.err: Caused by: com.microsoft.windowsazure.mobileservices.table.sync.push.MobileServicePushFailedException
W/System.err: at com.microsoft.windowsazure.mobileservices.table.sync.MobileServiceSyncContext.pushOperations(MobileServiceSyncContext.java:959)
W/System.err: at com.microsoft.windowsazure.mobileservices.table.sync.MobileServiceSyncContext.consumePushSR(MobileServiceSyncContext.java:859)
W/System.err: at com.microsoft.windowsazure.mobileservices.table.sync.MobileServiceSyncContext.access$1100(MobileServiceSyncContext.java:83)
W/System.err: at com.microsoft.windowsazure.mobileservices.table.sync.MobileServiceSyncContext$PushSyncRequestConsumer.run(MobileServiceSyncContext.java:1120)
同步代码与教程中的代码完全相同,但使用不同的表时,错误在推送线上
private AsyncTask<Void, Void, Void> sync() {
AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>(){
@Override
protected Void doInBackground(Void... params) {
try {
MobileServiceSyncContext syncContext = mClient.getSyncContext();
syncContext.push().get();
mtblAttachment.pull(null).get();
} catch (final Exception e) {
e.printStackTrace();
}
return null;
}
};
return runAsyncTask(task);
}
private AsyncTask sync(){
AsyncTask任务=新建AsyncTask(){
@凌驾
受保护的Void doInBackground(Void…参数){
试一试{
MobileServiceSyncContext-syncContext=mClient.getSyncContext();
syncContext.push().get();
mtblAttachment.pull(null.get();
}捕获(最终异常e){
e、 printStackTrace();
}
返回null;
}
};
返回runAsyncTask(任务);
}
好的,在我昨天最后一次评论之后,我已经解决了这个问题
类中的SerializedName字段必须与您在initLocalDatabase中输入的字段匹配(区分大小写)。尽管这个错误没有出现在我在ToDoItem应用程序上的测试运行中,但当我在实际应用程序中实现它时,它就出现了
因此,如果您收到MobileServicePushFailedException,请检查SerializedName字段是否与本地数据库字段名匹配。出于某种原因,它不会影响Azure数据库字段,这就是为什么我看到我的数据进入Azure而不是我的本地数据库。最佳做法是使所有字段完全相同(我当时想我是在偷懒!)。好的,在我昨天的最后一次评论之后,我已经解决了这个问题 类中的SerializedName字段必须与您在initLocalDatabase中输入的字段匹配(区分大小写)。尽管这个错误没有出现在我在ToDoItem应用程序上的测试运行中,但当我在实际应用程序中实现它时,它就出现了
因此,如果您收到MobileServicePushFailedException,请检查SerializedName字段是否与本地数据库字段名匹配。出于某种原因,它不会影响Azure数据库字段,这就是为什么我看到我的数据进入Azure而不是我的本地数据库。最佳做法是使所有字段完全相同(我当时觉得我很懒!)。您指的是哪本教程?你使用的是api的24版还是25版?@Mike抱歉,本教程我使用的是api 23。抱歉,我不知道具体的答案,但这里有一篇帖子-可能是身份验证问题?Ye,我看到了这个问题,但在ToDoItem教程中,我实现了相同的类和表,它可以正常工作,没有问题。确定发生了什么,但是数据在azure中,但不是本地的,我尝试查询,本地的所有内容都是空的,除了Id。我查看azure,数据就是它应该是的。这是怎么发生的?我想我会在本地添加它,然后同步,然后它会在两个表上转到azure。看起来实际的同步是认为存在冲突或其他问题,并在本地删除数据?您指的是哪个教程?你使用的是api的24版还是25版?@Mike抱歉,本教程我使用的是api 23。抱歉,我不知道具体的答案,但这里有一篇帖子-可能是身份验证问题?Ye,我看到了这个问题,但在ToDoItem教程中,我实现了相同的类和表,它可以正常工作,没有问题。确定发生了什么,但是数据在azure中,但不是本地的,我尝试查询,本地的所有内容都是空的,除了Id。我查看azure,数据就是它应该是的。这是怎么发生的?我想我会在本地添加它,然后同步,然后它会在两个表上转到azure。看起来实际的同步是认为存在冲突或其他问题,并在本地删除数据?