Я только что обновил мою службу mvc, чтобы включить большую ошибку и протоколирование. Я получил эту точную ошибку несколько раз. Но не может реплицироваться.
Unterminated string. Expected delimiter: ". Path 'Breadcrumbs[18].Params', line 1, position 59740. at Newtonsoft.Json.JsonTextReader.ReadStringIntoBuffer(Char quote) at
Путь различается каждый раз, в зависимости от того, что пользователь отправляет на сервер.
Мои запросы ajax обычно выглядят следующим образом:
$.ajax(myURL("SendBreadcrumbs"), {
type: "POST",
cache: false,
data: { telemetry: telemetry.JSONify(), userID: currentUser, isMyVI: isMyVI }
})
В этих случаях идентификаторы userID и isMyVI (boolean) не существовали и строка телеметрии усекается.
Метод JSONify выглядит следующим образом:
self.JSONify = function () {
var data = ko.mapping.toJSON(self, TelemetryMapping);
return data;
}
Это сериализатор нокаута.
Сторона сервера:
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);
}
}
Я полностью в тупике, я попробовал обновить web.config на сервере с большими значениями max и т.д., чтобы увидеть его усечение с этой стороны.
Единственное отличие, которое у меня есть в моем ajax, - глобальный тайм-аут 3 минут.
Является ли это так же просто, как специальные символы, которые не обрабатываются на стороне клиента или ограничения на стороне сервера, или данные настолько велики, что они становятся фрагментированными, а серверная сторона не знает, ждать следующего фрагмента?