2 Stimmen

ASP.NET: Sitzungsstatus wird bei Umleitung im Explorer nicht aktualisiert

Ich habe eine Aspx-Seite (page1.aspx), wo ich eine Session-Variable festlegen und dann auf eine andere Seite umleiten:

HttpContext.Current.Response.Redirect("page2.aspx");

Auf page2.aspx möchte ich die Sitzungsvariable lesen, aber sie existiert nicht, bis ich die Seite neu lade. Ich versuche, die Sitzungsvariable in page_load zu lesen.

Das Seltsame ist, dass es in Firefox funktioniert, aber nicht im Explorer?

(Beachten Sie, dass ich dies ein wenig vereinfacht, um das Problem page1.aspx wird von meinem HttpModule zugegriffen, dass und ist rewritepathed (mein Workaround, um den Zugriff auf Session) zu erklären. Der Fluss ist also HttpModule -pathrewrite-> page1.aspx (set session var) -redirect-> page.2.aspx.)

4voto

Chris Marisic Punkte 31583

Versuchen Sie, Ihre Response Redirect auf umzustellen:

Response.Redirect("page2.aspx",false);
HttpContext.Current.ApplicationInstance.CompleteRequest();

Der Nennwert Redirect(url) ruft implizit Redirect("url", true) die eine ThreadAbortException . Die ausgelöste ThreadAbortException ist eine spezielle Ausnahme, wenn sie als solche in ASP.NET ausgeführt wird. Diese Ausnahme kann zwar abgefangen werden, lässt sich aber nicht stummschalten. Sie wird in der ASP.NET-Aufrufkette weiter aufsteigen und den aktuellen Worker-Thread sofort beenden.

Es ist möglich, dass die abrupte Beendigung dies beeinflusst hat.

1voto

Niels Bosma Punkte 11382

Nur zur Dokumentation:

Hinzufügen von ApplicationInstance.CompleteRequest(); hat mein Problem nicht wirklich gelöst (mein Fehler).

Ich habe einen Blogeintrag gefunden, in dem das Problem beschrieben wird und dessen Lösung die Lösung war.

http://forums.asp.net/p/1163911/1931020.aspx#1931020

D.h. in Seite2 habe ich (bei PageLoad) hinzugefügt:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ExpiresAbsolute = DateTime.Now.AddMonths(-1);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X