V aplikaci je přihlašovací dialog. Zde by měla aplikace vytvořit session a poslat její identifikátor klientovi, což se stane.
Po přihlášení se zobrazí stránka obsahující frames, každý frame (a iframe) však znovu dostává jiný identifikátor session. To je špatné, protože každému frame je potom poslána jiný identifikátor session a tudíž má jeden uživatel více session.
Problém nenastane, pokud do přihlašovacího dialogu umístím kód:
Session["some_key"] = "some_value"; Session.Clear();
Trochu mě překvapuje, že session Session.Clear() je možné provést a je možné mít tedy prázdnou session. ASP.NET tedy pravděpodobně ruší session, pokud s ní nebylo pracováno (nebylo k ní přistoupeno).
Celý problém jsem vyřešil potomkem HttpApplication (Global.asax):
private void Application_PreRequestHandlerExecute(object sender, EventArgs e) { // tento kod opravuje podivne chovani Session. if (Context.Session != null) { Context.Session["__Application_PreRequestHandlerExecute"] = "some_value"; Context.Session.Remove("__Application_PreRequestHandlerExecute"); } }