首页 文章

Azure移动服务错误 - 无法完成请求 . ()

提问于
浏览
0

我正在使用带有.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 回答

  • 10

    在VS的异常对话框中进一步分析http响应之后 . 实际错误是404未找到 . 然后进一步调试问题,结果是Azure移动服务的应用程序URL应该是https而不是http

    如果产品团队可以找到这个并给出正确的错误消息,这将是很好的,这可以节省大量的时间,开发人员不会感到沮丧 .

  • 0

    我有同样的问题,但我的问题是,UpdateAsync尝试获取我的数据库中不存在的项目 .

    我已经使用SyncHandler和以下内容解决了这个问题捕获块:

    catch (Exception ex) when (ex is MobileServiceInvalidOperationException)
                    {
                        var error = (MobileServiceInvalidOperationException)ex;
    
                        if (operation.Kind != MobileServiceTableOperationKind.Update)
                        {
                            continue;
                        }
    
                        if (error.Response.StatusCode != HttpStatusCode.NotFound)
                        {
                            continue;
                        }
    
                        var azureMobileBackend = new AzureMobileBackend();
    
                        var table = await azureMobileBackend.GetSyncTable<...>();
                        await table.PurgeAsync(null, table.Where(x => x == operation.Item.ToObject<...>()), new CancellationToken());
                    }
    

    使用我的代码,我检查,移动应用程序是否尝试更新数据库中不存在的对象,以及是否在本地数据库中删除它 . 我不确定,这是否是最好的方式,但我的情况还可以 .

    我认为问题导致,如果应用程序正在关闭,而UpdateAsync方法正在工作 .

相关问题