Ich habe gerade meinen mvc-Dienst aktualisiert, um größere Fehler und Protokollierung hinzuzufügen. Ich habe jetzt genau diesen Fehler mehrmals. Aber kann nicht replizieren.Warum wird meine Ajax Post abgeschnitten?
Unterminated string. Expected delimiter: ". Path 'Breadcrumbs[18].Params', line 1, position 59740. at Newtonsoft.Json.JsonTextReader.ReadStringIntoBuffer(Char quote) at
Der Weg ist jedes Mal anders, je nachdem, was der Benutzer an den Server sendet.
Meine AJAX-Anfragen sehen in der Regel wie folgt aus:
$.ajax(myURL("SendBreadcrumbs"), {
type: "POST",
cache: false,
data: { telemetry: telemetry.JSONify(), userID: currentUser, isMyVI: isMyVI }
})
In diesen Fällen userID und isMyVI (boolean) didnt existieren und die Telemetrie Zeichenfolge abgeschnitten.
JSONify Methode ist wie folgt:
self.JSONify = function() {
var data = ko.mapping.toJSON(self, TelemetryMapping);
return data;
}
Diese knockoutJSs Serialisierer ist.
Server Side:
public void SendBreadcrumbs(string telemetry, string userID = null, bool isMyVI = true)
{
MyServiceAudit audit;
Guid UserID;
if (Guid.TryParse(userID, out UserID))
audit = InsertAudit(UserID);
else
audit = InsertAudit(null);
try
{
Models.Telemetry data = JsonConvert.DeserializeObject<Models.Telemetry>(telemetry);
Controllers.Telemetry.UpdateTelemetry(data, isMyVI);
}
catch (Exception ex)
{
MyServiceAuditDB.FailAudit(audit.ID, ex.Message + " " + ex.StackTrace);
}
}
ich völlig ratlos bin, ich habe versucht, auf dem Server die web.config Aktualisierung mit größeren MAXWERTE etc, seine auf der Seite abgeschnitten zu sehen.
Der einzige andere Unterschied, den ich in meinem Ajax habe, ist ein globales Timeout von 3 Minuten.
Ist dies so einfach wie Sonderzeichen nicht auf Client-Seite oder Server-Seite Einschränkungen behandelt, oder ist die Daten so groß es wird Chunked und Server-Seite weiß nicht auf den nächsten Chunk warten?
Wie groß ** ist ** die Daten? – stuartd
Es ist so lang wie ein Stück Schnur tbh. Ich notiere die HTTP-Parameter vor der Deserialisierung usw. (HttpContext.Request.Params.ToString()). Also eine der fehlgeschlagenen Anfragen das ist 117.454 Zeichen lang? –
Auch nur überprüft habe ich Params dieser Größe 3.119.214. Was ist nicht gescheitert? Kann ich die Kürzung aufgrund der Größe ausschließen? –