使用无效键值设置 JArray 值:"version"。应为 Int32 数组索引

Set JArray values with invalid key value: "version". Int32 array index expected

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

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; }

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

更新:我改变的是在它工作之后,我将每个操作的架构权限更改为 "Authenticated users only" 并且还添加了一个带有 google 的身份验证,之后我一直收到此错误无论我做什么。我在本地 sqlite 和 azure 上清理了 table,但它甚至没有帮助。

终于苦苦挣扎了将近整整 2 天,我终于弄明白了这个问题。创建 MobileServiceClient 时,我必须在我的 mobileApiUrl 中使用 https。在我没有对插入和更新使用任何身份验证之前,这工作正常,但是一旦我使用 google 和 facebook 添加身份验证,我就开始收到此错误,尽管读取查询仍在工作。我不知道它背后的原因是什么,但是从 http 更改为 https 就像一个魅力。

  MobileService = new MobileServiceClient(Url);