私は大きなエラーとロギングを含むように自分の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);
}
}
私は完全に困惑しています、私は、その、その側に切り捨て見るために、より大きなmaxvaluesなどでサーバー上のweb.configファイルを更新しようとしています。
私のajaxで唯一の違いは、3分のグローバルタイムアウトです。
これは、クライアント側やサーバー側の制限で処理されない特殊文字、またはそれほど大きくチャンクされたデータで、サーバー側は次のチャンクを待つことを知らないので簡単ですか?
**データはどれくらい大きいですか? – stuartd
その文字列の長さはtbhです。 deserialisingなどの前にhttpのparamsを記録します(HttpContext.Request.Params.ToString())。したがって、失敗したリクエストの1つは117,454文字ですか? –
また、このサイズのパラメータが3,119,214あることを確認しました。どちらが失敗しなかったのですか?だから私はサイズのために切り捨てを除外することができますか? –