Ich habe eine asp.net mvc-Anwendung und ich habe diese seltsame Sache, die passiert und ich weiß nicht warum.Cookies werden gelöscht
Kontext:
Ich habe eine Seite, die die Benutzer Bilder zeichnen und bearbeiten kann. Diese Seite hat eine Funktion, dass sie alle 5 Minuten einen Ajax-Aufruf an den Server unter Verwendung von jquery, Speichern des aktuellen Status des Projekts in der Datenbank und einen weiteren Aufruf zum Speichern eines Bildes des Projekts, das Speicher an einem richtigen Ort ist .
Problem:
Mit dem Browser minimiert, wenn diese Funktion gestartet wird, nach dem Ajax-Aufruf an den Server, der Cookie Kunde ist gelöscht. Aber wenn der Chrom maximiert ist, funktioniert das gut.
Hinweise:
- Dies geschieht nur, wenn der Browser
- minimiert Dies geschieht, zumindest in Chrome und Firefox.
- Dies geschieht nur in der Produktionsumgebung. Auf meinem lokalen Rechner und auf Visual Studio kann ich nicht das Problem reproduzieren
- Der asp.net Session-Cookie mantainned wird
Ich weiß, dass schwierig ist für Sie nur mit diesen Informationen zu helfen, aber, wenn Sie geben können Ich denke, es wird sehr hilfreich sein. Ich versuche, das Problem aufzudecken, damit wir ähnliche Probleme abgleichen können, um die beste Lösung für diesen Fall zu finden.
Vielen Dank im Voraus
[EDIT]:
ich über das Thema einige neue haben:
- Mit Chrome Version 63.0.3239.84 (Official Erstellung) (64-bit);
- Firefox Quanten 57,0 (64-Bit);
- Im Gegensatz dazu habe ich zuerst gedacht, das passiert auch wenn der Browser nicht minimiert wird und genau 3 Min. Nach dem Laden der Seite (wenn ich die Funktion anrufe)
- Die Cookies werden nicht gelöscht aber der Inhalt des Cookies ist :
- Dies ist ein asp.net Web-Anwendung
- die Konsole keine Fehler
- die Version der Abfrage
Folgt dem
jquery
Anruf-Code ist 2.1.3 nicht gibt:makeAjaxCall(ajaxData) { var localData = ajaxData.data ? ajaxData.data : {}, urlVariables = {}; localData.cmd = ajaxData.cmd; var controlerURL = ajaxData.uploadUrl ? HelperJSViewBag.getValue("ajaxCAllUploadURL") : ajaxData.controller; if (typeof ajaxData.data.urlVariables == "undefined") ajaxData.data.urlVariables = []; let editorVersion = ""; let forceEditorVersion = ""; if (typeof UrlParameters != "undefined") { editorVersion = UrlParameters.getInstance().editorVersion; forceEditorVersion = UrlParameters.getInstance().forceEditorVersion; } else if (typeof HLinks != "undefined") { editorVersion = HLinks.getUrlVariable("editorVersion"); forceEditorVersion = HLinks.getUrlVariable("forceEditorVersion"); } if (editorVersion.length > 0) ajaxData.data.urlVariables.push({ name: "editorVersion", value: editorVersion, }); if (forceEditorVersion.length > 0) ajaxData.data.urlVariables.push({ name: "forceEditorVersion", value: forceEditorVersion, }); if (typeof ajaxData.data.urlVariables != "undefined" && ajaxData.data.urlVariables.length > 0) for (var i = 0; i < ajaxData.data.urlVariables.length; i++) urlVariables[ajaxData.data.urlVariables[i].name] = ajaxData.data.urlVariables[i].value; localData = this.fillLocalData(localData); return $.ajax({ type: 'POST', data: localData, url: controlerURL + "?" + $.param(urlVariables), success: function (data) { try { var result = JSON.parse(data), status = result.status; delete result.status switch (status) { case 1: ajaxData.sucess && ajaxData.sucess(result.data); break; case 2: ajaxData.insucess && ajaxData.insucess(ajaxData.errorHandler && ajaxData.errorHandler.handle && ajaxData.errorHandler.handle(result)); break; } } catch (ex) { ajaxData.insucess && ajaxData.insucess(ajaxData.errorHandler && ajaxData.errorHandler.handle && ajaxData.errorHandler.handle(ex)); } }, error: function (data) { ajaxData.insucess && ajaxData.insucess(ajaxData.errorHandler && ajaxData.errorHandler.handle && ajaxData.errorHandler.handle(data)); } }); }
Können Sie die Registerkarte Netzwerk aktivieren und minimieren Sie den Browser? Setzen Sie console.log auch mit Zeitdruck, damit Sie wissen, was passiert, ob aus irgendeinem Grund die Sitzung abläuft oder der Anruf nicht erfolgt? Ich nehme an, dass Sie setTimeout oder setInterval verwenden? In jedem Fall fügen Sie Protokollierung und Kontrolle Konsole nach dem Minimieren –
Da dies mit Zeichnungen verbunden ist, denke ich, kann es ein Problem beim Lesen des Bildschirms, wenn minimiert werden? Wenn Sie das Cookie löschen, bevor Sie den Ajax-Anruf tätigen, kann ein Fehler beim Ajax-Anruf dazu führen, dass ein Cookie gelöscht wird. – cytsunny
Welchen Code verwenden Sie, um den Cookie zu generieren? Treten in diesem Fall Konsolenfehler auf? Welche Version von Chrome und FF verwenden Sie zum Testen? – Twisty