Я только что обновил свой сервис mvc, чтобы включить большую ошибку и протоколирование. Я получил эту точную ошибку несколько раз. Но не может реплицироваться.Почему мой пост ajax усечен?
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 }
})
В этих случаях, ID_пользователь и isMyVI (булев) существует и техник его подводит строка телеметрической усеченные.
метод JSONify выглядит следующим образом:
self.JSONify = function() {
var data = ko.mapping.toJSON(self, TelemetryMapping);
return data;
}
Это knockoutJSs сериализатору.
стороне сервера:
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 на сервере с большим maxvalues и т.д., чтобы увидеть его усечения на той стороне.
Единственное отличие, которое у меня есть в моем ajax, - это глобальный тайм-аут в 3 минуты.
Является ли это так же просто, как специальные символы, которые не обрабатываются на стороне клиента или ограничения на стороне сервера, или данные настолько велики, что их обрывают, а серверная сторона не знает, ждать следующего фрагмента?
Насколько велики ** данные **? – stuartd
Его до тех пор, как кусок строки tbh. Я записываю параметры http перед десериализацией и т. Д. (HttpContext.Request.Params.ToString()). Итак, одна из неудачных запросов - 117 454 символов? –
Также только что проверили, у меня есть параметры этого размера 3,119,214. Который не подвел? Могу ли я исключить усечение из-за размера? –