2016-04-16 3 views
1

Ich habe mit Offline-Sync-Option mit azurblauen mobilen Diensten erstellt. Am Anfang hat alles gut funktioniert. Ich habe mehrere Zeilen eingefügt und bin nach ein paar Tagen zu meiner App zurückgekehrt, als ich versucht habe, einen Einschub in meinen Tisch zu machen. Ich erhalte die Fehlermeldung alsLegen Sie JArray-Werte mit ungültigem Schlüsselwert fest: "Version". Int32 Array-Index erwartet

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

Ich habe versucht, die Version Eigenschaft wie unten in meinem todoitem.cs

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

oder

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

hinzufügen Aber weder Fälle hat mir geholfen. Ich bekomme den Fehler nur, wenn ich versuche einzufügen. Lesen von Daten ist in Ordnung. Erwartet er, dass ich etwas setze. Ich dachte, dass es automatisch während einer neuen Zeile eingefügt wird und nur verwendet, um zwischen Zeilenversion der Daten zwischen Server und Client zu überprüfen.

UPDATE: was ich geändert habe, war, nachdem es funktionierte, änderte ich die Schemaberechtigungen für jede Aktionen auf "Nur authentifizierte Benutzer" und fügte auch eine Authentifizierung mit Google hinzu und danach bekam ich diesen Fehler, was auch immer ich mache. Ich putzte Tisch auf lokalen SQLite und Azur, aber es half nicht einmal.

Antwort

1

Endlich kämpft fast ganze 2 Tage Ich finde das Problem. Ich musste https in meinem MobileApiUrl verwenden, während ich MobileServiceClient erstellte. Dies funktionierte gut, bevor ich keine Authentifizierung bei Einfügung und Aktualisierung verwendete, aber sobald ich die Authentifizierung mit Google und Facebook hinzufügte, fing ich an, diesen Fehler zu bekommen, obwohl Leseabfragen immer noch funktionierten. Ich weiß nicht, was der Grund dafür ist, aber der Wechsel von http zu https funktionierte wie ein Zauber.

MobileService = new MobileServiceClient(Url); 
+0

Es ist schwer zu sagen, warum, aber Sie haben Recht. Die meisten Authentifizierungseinstellungen erfordern https. Daher vermute ich, dass das Token aufgrund der Erwartung von https nicht ordnungsgemäß übertragen wurde und den Fehler verursacht hat. –

+0

@AdrianHall offensichtlich. Ich wünschte, dass Azure zumindest eine richtige Fehlermeldung zurückgab, anstatt sie zu missbrauchen. Ich war so überrascht, nach dem googeln für 2 Tage keinen einzigen Eintrag über diesen Fehler zu finden. Jedenfalls hoffe ich, dass dieser Eintrag trotzdem auf den gleichen Fehler trifft. – batmaci

+0

Sie rocken, Mann !. Vielen Dank! –

Verwandte Themen