ASP.NET Session zwischen Subdomains

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.

clip_image002

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:

clip_image004

Der Event lässt sich so registrieren:

clip_image006

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.

enjoyed the post?

Tags:

ASP.NET

Comments are closed

About Oliver

shades-of-orange.com code blog logo I build web applications using ASP.NET and have a passion for javascript. Enjoy MVC 4 and Orchard CMS, and I do TDD whenever I can. I like clean code. Love to spend time with my wife and our children. My profile on Stack Exchange, a network of free, community-driven Q&A sites

About Anton

shades-of-orange.com code blog logo I'm a software developer at teamaton. I code in C# and work with MVC, Orchard, SpecFlow, Coypu and NHibernate. I enjoy beach volleyball, board games and Coke.