Jak a proč jsou v prostředí ASP opakovaně ID relace.NET

Překlady článku Překlady článku
ID článku: 899918 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

ÚVOD

Tento článek popisuje, jak a proč Microsoft ASP.NET session ID jsou používány.

Další informace

ASP.NET session státu je technologie, která umožňuje ukládat data na straně serveru, specifické pro uživatele. Webové aplikace lze tato data zpracovávat požadavky od uživatelů, pro které byla vytvořena stav relace. Stav relace uživatele je identifikována ID relace. ID relace se dodává pomocí jedné z následujících metod:
  • ID relace je součástí souboru cookie, který je odeslán do prohlížeče uživatele.
  • ID relace je vložený v adrese URL. Tato technika se nazývá také souboru cookie relace.
ID relace jsou náhodné číslo 120-bit představuje řetězec 20 znaků. Řetězec je formátován tak, aby bylo možné zahrnout do adresy URL a nemá být podrobeny kódování adres URL. Například řetězec lze v souboru cookie relace. Nejběžnější způsob doručování relace ID je použití souborů cookie Uložit ID relace.

Jestliže uživatel poprvé otevře webového prohlížeče a poté přejde na web která implementuje ASP.NET session státu, soubor cookie je odeslána do prohlížeče s název "ASP.NET_SessionId"a hodnota 20 znaků.

Když uživatel prohlíží ve stejné doméně DNS, pokračuje odeslat tento soubor cookie na doménu, pro kterou bylo získání webového prohlížeče.

Například app1.tailspintoys.com a app2.tailspintoys.com jsou oba ASP.NET aplikací. Pokud uživatel přejde na app1.tailspintoys.com a potom Přejde na app2.tailspintoys.com použít obě aplikace stejný soubor cookie a stejné ID relace ke sledování stavu relace uživatele v rámci každé aplikace. Aplikace nesdílejí stejný stav relace. Aplikace sdílet pouze ID relace.

Proto můžete znovu použít ID relace Chcete-li z několika důvodů. Můžete znovu použít relace ID, není například nutné provést následující:
  • Vytvoření nového kryptograficky ID jedinečné relace, když se zobrazí ID platné relace
  • Vytvořit nové ID relace pro každého PROSTŘEDÍ ASP.NET aplikací, která je v jedné doméně.
Webové aplikace vyžaduje přihlášení a odhlášení stránky nebo možnost nabízí, doporučujeme Vymazat stav relace, když uživatel odhlásí z webu. Chcete-li vymazat stav relace, zavolejte Session.Abandon Metoda. Na Session.Abandon metoda umožňuje vyprázdnění stav relace bez čekání na vypršení časového limitu stavu relace. Ve výchozím nastavení tato časový limit je posuvné platnosti na 20 minut. Tento vypršení platnosti je aktualizován při každém, uživatel vytvoří požadavek na web a představuje ID souboru cookie relace. Na Opustit Metoda nastaví příznak v objektu stavu relace, která označuje, že stav relace by nemělo být používáno. Příznak je zkontrolován a projednání na Konec požadavek na webovou stránku. Proto může uživatel použít relace objekty v rámci stránky Po volání Opustit Metoda. Jakmile je dokončeno zpracování stránky, relace je odebrána.

Při použití režimu stavu relace v rámci procesu jsou uloženy tyto objekty stavu relace v HttpCache. HttpCache podporuje metody zpětného volání, pokud jsou splněny následující podmínky:
  • Položka mezipaměti je odebrána.
  • Správce stavu relace zaregistruje Session_OnEnd Obslužná rutina události volat, pokud je položka mezipaměti odebrat.
Když správce relací stát odebere stav relace objektu se nachází v mezipaměti, vyzve správce HttpCache všechny registrované zpětná volání. Ve skutečnosti toto chování vyvolává Session_OnEnd obslužnou rutinu události.

Když upustit od relace ID soubor cookie nejsou odebrány z prohlížeče uživatele relace. Proto ihned, jak byla relace přenechány všechny nové požadavky na stejné aplikace bude používat stejné ID relace ale bude stát novou relaci instance. Současně, pokud uživatel otevře jiná aplikace na stejném serveru DNS doména uživatele nedojde ke ztrátě stavu relace po Opustit Metoda je volána z jedné aplikace.

Někdy můžete chtít znovu použít ID relace. Pokud tak učiníte a pochopit důsledky není opětovné použití ID relace, použijte následující příklad kódu k opuštění relace a vymazání souboru cookie relace ID:
Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
Příklad kódu vymaže ze serveru a nastaví stav relace cookie relace stav na hodnotu null. Hodnota null účinně odstraní soubor cookie v prohlížeči.

Když uživatel není odhlášení z aplikace a dojde k vypršení časového limitu stavu relace, aplikace stále používat stejný stav relace soubor cookie, pokud prohlížeč není uzavřeno. Toto chování způsobuje, že uživatel na na přihlašovací stránku a stav souboru cookie relace uživatele, které mají být předloženy. K zajištění že nové relace ID se používá při otevření stránky přihlášení (login.aspx), odeslat null soubor cookie zpět klientovi. Chcete-li to provést, přidat soubor cookie kolekce odpověď. Odešlete kolekce odpověď zpět klientovi. Nejjednodušší způsob, jak Odeslat null soubor cookie je pomocí Response.Redirect Metoda. Protože vždy kolekce cookies má hodnotu pro ASP.NET_SessionId, nemůžete právě testovat Pokud tento soubor cookie existuje, protože vytvořené Response.Redirect smyčka. Řetězec dotazu lze nastavit na přesměrování na přihlašovací stránku.

Nebo, jak je znázorněno v následujícím příkladu kódu, můžete použít jiný soubor cookie sdělit, pokud je již přesměrována na přihlašovací stránku. Pomáhají zlepšit zabezpečení a ujistěte se, že nikdo pokusí otevřít přihlašovací stránku pomocí druhého souboru cookie spolu s ASP.ČISTÉ soubory cookie, následující příklad kódu používá FormsAuthentication Třída k šifrování a dešifrování dat souboru cookie. Potom kód v příkladu nastaví časový limit 5 sekund.
private void Page_Load(object sender, System.EventArgs e)
{ 
if( !IsPostBack && 
( Request.Cookies["__LOGINCOOKIE__"] == null ||
Request.Cookies["__LOGINCOOKIE__"].Value == "" ) )
{
//At this point, we do not know if the session ID that we have is a new
//session ID or if the session ID was passed by the client. 
//Update the session ID.

Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

//To make sure that the client clears the session ID cookie, respond to the client to tell 
//it that we have responded. To do this, set another cookie.
AddRedirCookie();
Response.Redirect( Request.Path );
}

//Make sure that someone is not trying to spoof.
try
{
FormsAuthenticationTicket ticket =
FormsAuthentication.Decrypt( Request.Cookies["__LOGINCOOKIE__"].Value );

if( ticket == null || ticket.Expired == true ) 
throw new Exception();

RemoveRedirCookie();
}
catch
{
//If someone is trying to spoof, do it again.
AddRedirCookie();
Response.Redirect( Request.Path );
}


Response.Write("Session.SessionID="+Session.SessionID+"<br/>");
Response.Write("Cookie ASP.NET_SessionId="+Request.Cookies["ASP.NET_SessionId"].Value+"<br/>");
} 

private void RemoveRedirCookie() 
{ 
Response.Cookies.Add(new HttpCookie("__LOGINCOOKIE__", "")); 
} 

private void AddRedirCookie()
{

FormsAuthenticationTicket ticket = 
new FormsAuthenticationTicket(1,"Test",DateTime.Now,DateTime.Now.AddSeconds(5), false,""); 
string encryptedText = FormsAuthentication.Encrypt( ticket ); 
Response.Cookies.Add( new HttpCookie( "__LOGINCOOKIE__", encryptedText ) );
}

Vlastnosti

ID článku: 899918 - Poslední aktualizace: 22. května 2011 - Revize: 3.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft .NET Framework 1.1
Klíčová slova: 
kbinfo kbhowto kbmt KB899918 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:899918

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com