Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MobileServicePushFailedException Azure Android_Android_Azure_Android Asynctask_Synchronization_Azure Mobile Services - Fatal编程技术网

MobileServicePushFailedException Azure Android

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

我正在为我的Android应用程序实施移动服务,以连接到azure。我已经完成了离线同步教程,效果很好

我现在尝试在我的应用程序中使用不同的表实现相同的方法,但我得到了一个Push异常。有趣的是,它仍然被插入在线数据库。有人知道为什么会这样吗

作为测试,我在ToDoItem项目中实现了相同的类、表等,没有错误

以下例外情况

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。看起来实际的同步是认为存在冲突或其他问题,并在本地删除数据?