使用无效键值设置 JArray 值:"version" 。预期的 Int32 数组索引



我使用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; }

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

更新:我所做的改变是,在它工作后,我将每个操作的模式权限更改为"Authenticated users only",并添加了一个谷歌身份验证,在那之后,无论我做什么,我都会不断收到这个错误。我在本地sqlite和azure上清理了表,但它甚至没有帮助。

终于挣扎了几乎整整两天,我解决了这个问题。在创建MobileServiceClient时,我不得不在我的mobileApiUrl中使用https。在我没有在插入和更新时使用任何身份验证之前,这一切都很好,但一旦我添加了谷歌和脸书的身份验证,我就开始出现这个错误,尽管读取查询仍然有效。我不知道背后的原因是什么,但从http改为https就像一种魅力。

  MobileService = new MobileServiceClient(Url);

最新更新