by admin
18. March 2008 03:29
Für die Umsetzung einer ,mehrsprachigen Seite, möchten wir für jede Sprache eine eigene Subdomain verwenden.
Also:
- www.domain.org (default Sprache)
- en.domain.org
- es.domain.org
- und noch 30 weitere :-)
Beim Wechsel der Sprache erfolgt eine Redirect auf die entsprechende Subdomain.
Beim Rederict auf eine andere Domain, geht in ASP.NET die aktuelle Session verloren.
Grund, die aktuelle SessionId wird von ASP.NET, sofern nicht "Cookieless", in einem Cookie gespeichert. Per default wird als Cookie Domain, die aktuelle Domain, inklusive der Subdomains definiert.
Also für www.domain.org, ist auch die Domain des Cookies: "domain=www.domain.org"
Navigiert man also von einer Subdomain zu einer anderen, wird nun ein neues Session-Cookie mit einer neuen SessionId gesetzt.
Möchte man dieses verhindern hilft folgender Code:
Der Event lässt sich so registrieren:
Hier wird die Domain des gesetzten Cookies im Unload Event der Masterpage angepasst. Wichtig ist, das der "Domain" Teil des Cookies auf allen Seiten der Anwendungen korrigiert wird.