ASP.NET_SessionId fehlt
Ich verliere die ASP.NET_SessionId beim Wechsel zwischen den Seiten auf meine Website. Das Problem tritt bei Chrome/Firefox/Safari. Es geschieht nicht im IE. Es ist ziemlich seltsam...hier ist mein Szenario.
Meine Website zugegriffen werden kann, durch Eingabe von www.example.org oder example.org im browser (dies ist eine wichtige Information, wie Sie sehen werden).
Ich eingeben example.org. Von meiner Homepage, ich logge in meine Website (Hinweis: ich bin nicht mit ASP.NET forms-Authentifizierung). Ich bin an meinem Standard-Benutzer-Seite (z.B. Benutzerseite.aspx). Von dieser Seite habe ich klicken Sie auf ein <a>
schickt mich zu einer anderen Seite auf meiner Website. Die <a>
link ist voll-qualifiziert (z.B., http://www.example.org/page2.aspx). Wenn ich geschickt bekommen auf der neuen Seite meine session verloren!!!
So, ich lief Fiddler ' zu versuchen, und entdecken Sie das problem. Was ich fand, war interessant. Die Anfrage-Header-tag Referer war verloren zwischen den Seiten.
Hier sind die Schritte:
- Gehen example.org.
- Login example.org.
- Ich bekommen umgeleitet zu Benutzerseite.aspx. Der Referer ist http://example.org. Die ASP.NET_SessionId gesetzt.
- Ich auf die
<a>
(z.B., http://www.example.org/page2.aspx). Nachdem die Seite gerendert wird, wird die ASP.NET_SessionId verloren.
Den verlorenen ASP.NET_SessionId verloren geht, konsequent ist Google Chrome/Firefox/Safari. Dies geschieht nicht im IE.
Wenn Sie die obigen Schritte wiederholen, durch die Substitution example.org mit www.example.org die ASP.NET_SessionId ist nicht verloren. Es funktioniert, richtig jedes mal.
Irgendwelche Gedanken zu diesem Verhalten?
- in fiddler wird der cookie gesendet, die in allen Fällen oder nicht?
- was Sie versuchen, in page2 code hinter? und sind Sie mit InProc-session-state-Modus?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie diese auf Ihrer Website.config unter den <system.web - > - element
Sehen, ob es irgendeine änderung im Verhalten. Es klingt, als ob sub-domains Versagen, obwohl ich dachte, das cookie wurde basierend auf der root-domain, um mit zu beginnen. dieser sollte Kraft es so.
In meinem Fall Folgendes war das Problem:
In meinem lokalen Visual Studio-Umgebung, die meine Entwicklung "web.config" - Datei versehentlich geändert werden enthalten die folgenden:
Seit der Entwicklung IIS Express läuft bei
http://localhost:7561
, die nicht HTTPS, ist diese Prüfung ausgelöst, um nicht eingestellt/akzeptiert keine cookies, einschließlich der session-ID-cookie.Lösung war zu einfach kommentieren Sie die
<httpCookies requireSSL="true" />
Linie.Einer anderen, ähnlichen Frage, die ich mir vorstellen könnte ist, dass die
Content-Security-Policy
HTML-meta-tag, dass auch steuert, wie cookies behandelt werden, könnte auch so konfiguriert werden nicht zulassen, dass die session-ID-cookie gesetzt werden.