c# - 使用无效键值设置 JArray 值 : "version". 需要 Int32 数组索引

标签 c# azure xamarin.forms azure-mobile-services

我使用 Azure 移动服务使用离线同步选项创建。一开始一切都很顺利。我插入了几行,几天后当我尝试在表中插入时回到我的应用程序。我收到的错误消息为

System.ArgumentException: Set JArray values with invalid key value: "version". Int32 array index expected.
  at Newtonsoft.Json.Linq.JArray.set_Item (System.Object key, Newtonsoft.Json.Linq.JToken value) [0x00028] in <filename unknown>:0 
  at Microsoft.WindowsAzure.MobileServices.MobileServiceTable.GetJTokenFromResponse (Microsoft.WindowsAzure.MobileServices.MobileServiceHttpResponse response) [0x00035] in <filename unknown>:0 
  at Microsoft.WindowsAzure.MobileServices.MobileServiceTable+<>c__DisplayClass14+<<InsertAsync>b__13>d__16.MoveNext () [0x000f7] in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---

我尝试在我的 todoitem.cs 中添加版本属性,如下所示

    [Version]
    public byte[] Version { get; set; }

    [TimeStamp]
    public byte[] Version { get; set; }

但这两种情况都对我没有帮助。仅当我尝试插入时才会出现错误。读取数据就好了。难道是在等我设定什么吗?我认为它是在新行插入期间自动分配的,仅用于验证服务器和客户端之间数据的行版本。

更新:我更改的是在它工作之后,我将每个操作的架构权限更改为“仅限经过身份验证的用户”,并且还添加了谷歌身份验证,之后无论我做什么,我都会不断收到此错误。我在本地 sqlite 和 azure 上清理了 table ,但它甚至没有帮助。

最佳答案

终于在几乎整整两天的努力中我找到了问题所在。创建 MobileServiceClient 时,我必须在 mobileApiUrl 中使用 https。在我没有在插入和更新上使用任何身份验证之前,这工作得很好,但一旦我添加了谷歌和 Facebook 的身份验证,我就开始收到此错误,尽管读取查询仍在工作。我不知道其背后的原因是什么,但从 http 更改为 https 非常有效。

  MobileService = new MobileServiceClient(Url);

关于c# - 使用无效键值设置 JArray 值 : "version". 需要 Int32 数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36664576/

相关文章:

c# - 如何修改Shell中的图片以显示通知徽章?

c# - Xamarin Forms Grid - C# 中的行高为 "*"?

c# 前端 GUI 调用 linux C++ 函数

c# - 后台运行的应用程序

Azure逻辑应用程序: Filter Query Difference between dates should not exceed 10 months

Azure 策略分配 - 排除资源类型

c# - Xamarin Forms 条目中的删除线文本

c# - 指数中的最后一位 - 错误答案 - C#

c# - 如何通过 Unity (C#) 使用 Ruby on Rails 用户 Controller 来注册新用户?

azure - 使用什么 Azure 消息服务?