In meiner asp.net Webanwendung auf der Seite lade ich die aktuelle Seite URL und speichern Sie es in einer Sitzungsvariablen, um zu verfolgen, auf welcher Seite der Benutzer ist, so dass sie zurückkehren können, wenn sie einen Admin-Bereich betreten, navigieren um usw. Sie können dann auf den Zurück-Button klicken und werden zu der Seite weitergeleitet, auf der sie sich befanden, bevor sie den Admin betreten.
Das alles funktioniert in IE8; In FF und Chrome, wenn der Admin im Admin-Link ist, wird der Link auf die benutzerdefinierte 404-Seite umgeleitet, die ich für die Web-App verwende.
Zu Testzwecken habe ich den Code, den ich unten geschrieben habe, mit meinem Seitenladeereignis hinzugefügt:
%Vor%Auch dies funktioniert problemlos in IE, aber in FF und Chrome beim Laden der Seite zeigt die Session-Variable den 404-Seitenlink an und zeigt nach der Einstellung den richtigen Link an. Ich habe Fiddler verwendet, um zu sehen, was vor sich ging, und Chrome wirft einen 404 in den GET-Header für die Datei favicon.ico, die ich nicht in dieser Web-App verwende.
Ich habe die faviocon-Datei und den Link im Kopf der site.master-Datei hinzugefügt, und Chrome und FF funktionieren jetzt einwandfrei; Ich bin mir immer noch nicht sicher, warum das passiert. Hat jemand eine Idee, warum oder wie meine Session-Variable von Chrome oder FF überschrieben wird?
Als eine Randnotiz habe ich durch das Debugging des Prozesses gegangen und currentUrl ist die richtige URL.
Nun, wenn Sie den .NET-Handler benutzen, um alle Seiten (dh alle Dateierweiterungen) zu bedienen, dann macht es Sinn, wenn Ihr Browser eine Anfrage für favicon.ico macht (google um zu verstehen, was das ist), Der Server findet ihn nicht und leitet ihn an einen 404 weiter. Dieser wiederum ändert die Sitzungsvariable als "die letzte Seite, die bedient wird": 404.
Wenn Sie nun Ihre Admin-Seite rendern und die Sitzung nach "der letzten Seite" abfragen, was bekommen Sie? "404".
Ich würde vorschlagen, dass Sie die URL überprüfen, bevor Sie sie in der Sitzung speichern
%Vor%Wenn Sie auf Ihren Administrator zugreifen, behalten Sie Ihre Sitzung bei? Haben Sie mit Fiddler eine weitere Anfrage für Ihre Seite erhalten? Suchen Sie nach Bild-Tags mit src="" oder iframes.
Sie müssen die Session var auf jeder Frontend-Seite einstellen, aber Sie dürfen nie auf den Admin-Seiten setzen, sondern nur den "Back" -Link erstellen. Wenn Sie Global.asax-Ereignisse verwenden, sollten Sie darauf achten, dass die Variable nicht geändert wird, wenn Sie Admin-Seiten bereitstellen.
Tags und Links asp.net session-variables google-chrome