我正在使用带有.net后端的Azure移动服务,MvvmCross使用基于Xamarin Pcl的解决方案 . 当我从Azure移动服务提供的默认浏览器界面以交互方式运行时,该服务会返回结果 . 我也在使用离线数据同步功能 . 我可以将数据推送到服务器并且它可以工作,但现在当我尝试从服务器提取数据时 .
{Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException:无法完成请求 . ()at Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.d__18.MoveNext()---从抛出异常的上一个位置的堆栈跟踪结束---在System的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) . System.Runtime.CompilerServices.TaskAwaiter.GetResult()中的Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务),位于Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.d__1d.MoveNext()---来自先前位置的堆栈跟踪结束,其中异常是抛出---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)处于System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务),位于Microsoft.WindowsAzure.MobileServices上的System.Runtime.CompilerServices.TaskAwaiter1.GetResult() .MobileServiceHttpClient . <RequestAsync> d__4.MoveNext()---从抛出异常的上一个位置开始的堆栈跟踪---在System.Runtime.CompilerServices.Tas System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中的System.Runtime.CompilerServices.TaskAwaiter1.GetResult()at Microsoft.WindowsAzure.MobileServices.MobileServiceTable.d__f.MoveNext()---中的kAwaiter.ThrowForNonSuccess(任务任务)从抛出异常的先前位置开始的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter1上System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)处.GetResult()在Microsoft.WindowsAzure.MobileServices.MobileServiceTable . <ReadAsync> d _7.MoveNext()---从抛出异常的上一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)在Microsoft.Win的System.Runtime.CompilerServices.TaskAwaiter1.GetResult()上的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) dowsAzure.MobileServices.Sync.PullAction.d__0.MoveNext()---抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices上的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) System.Runtime.CompilerServices.TaskAwaiter.GetResult()中的.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务),位于Microsoft.WindowsAzure.MobileServices.Sync.TableAction.d__0.MoveNext()---从先前位置抛出异常的堆栈跟踪结束---位于Microsoft.WindowsAzure.MobileServices的System.Runtime.CompilerServices.TaskAwaiter.GetResult()的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) . Sync.MobileServiceSyncContext . d__3b.MoveNext()---抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)中在Microsoft.WindowsAzure.MobileServices.Sync.MobileServiceSyncContext.d__27.MoveNext()中的System.Runtime.CompilerServices.TaskAwaiter.GetResult()---从抛出异常的上一个位置的堆栈跟踪结束---在System.Runtime . CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务),位于System.Runtime.CompilerServices.TaskAwaiter.GetResult()的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务),位于AgLiveMobile.Core.Services.EmployeeService.d__4.MoveNext()}
我甚至调试了从客户端到服务器的服务,结果是来了,但我不知道为什么会发生这种情况 . 我正在我的Windows Phone 8.1设备上测试Wifi连接 .
请帮忙 .
2 回答
在VS的异常对话框中进一步分析http响应之后 . 实际错误是404未找到 . 然后进一步调试问题,结果是Azure移动服务的应用程序URL应该是https而不是http
如果产品团队可以找到这个并给出正确的错误消息,这将是很好的,这可以节省大量的时间,开发人员不会感到沮丧 .
我有同样的问题,但我的问题是,UpdateAsync尝试获取我的数据库中不存在的项目 .
我已经使用SyncHandler和以下内容解决了这个问题捕获块:
使用我的代码,我检查,移动应用程序是否尝试更新数据库中不存在的对象,以及是否在本地数据库中删除它 . 我不确定,这是否是最好的方式,但我的情况还可以 .
我认为问题导致,如果应用程序正在关闭,而UpdateAsync方法正在工作 .