Server.Transfer vs Response.Redirect
Server i Response jsou objekty v ASP.NET. Objekt serveru poskytuje metody a vlastnosti pro různé úkoly související se serverem. Přenos je metoda objektu serveru a odešle informace o aktuálním stavu do jiného souboru ASP pro zpracování. Objekt odpovědi popisuje metody a vlastnosti související s odezvou serveru. Přesměrování je metoda objektu Response a odešle do prohlížeče zprávu, která ho připojí k jiné adrese URL. Přestože lze použít Server.Transfer i Response.Redirect k přenosu uživatele z jedné stránky na druhou, liší se v tom, jak tuto úlohu skutečně provádějí.
Co je Response.Redirect?
Přesměrování je metoda v objektu Response. Když je vyvolána metoda Response, odešle do prohlížeče uživatelů kód HTTP 302 a URL požadované webové stránky. HTTP kód 302 informuje prohlížeč uživatelů, že požadovaný zdroj je umístěn pod jinou URL. Když prohlížeč obdrží kód, otevře zdroj v novém umístění. Požadovaná webová stránka může být umístěna na stejném serveru jako stránka, která obsahovala požadavek, nebo by se mohla nacházet na jiném serveru. Při vyžádání webové stránky, která se nachází na stejném serveru jako aktuální stránka, lze použít metodu Response takto:
Response.Redirect („nextPage.html“);
Při žádosti o webovou stránku umístěnou na jiném serveru lze použít metodu Response takto:
Response.Redirect („http://www.newServer.com/newPage.aspx“);
Co je Server.Transfer?
Jak již bylo zmíněno dříve, přenos je metoda objektu serveru. Při vyvolání metody Transfer je původní požadavek upraven tak, aby se přenesl na jinou stránku na stejném serveru. Pokud je požadována nová stránka pomocí serveru.Transfer, adresa URL zobrazená ve webovém prohlížeči uživatelů se nezmění. Důvodem je, že k přenosu dochází na straně serveru a prohlížeč nemá o přenosu žádné znalosti. Použitím druhého přetížení pro server.Transfer (řetězcová cesta, bool preserveForm) a nastavením druhého parametru na true, lze zaúčtované proměnné formuláře a řetězce dotazů zpřístupnit na druhou stránku.
Jaký je rozdíl mezi Server.Transfer a Response.Redirect?
Přestože lze použít Server.Transfer i Response.Redirect k přenosu uživatele z jedné stránky na druhou, mezi těmito dvěma metodami existují určité rozdíly. Kromě zjevného syntaktického rozdílu, Response.Redirect dělá zpáteční cestu k serveru, zatímco Server.Transfer změní zaměření webového serveru na jinou webovou stránku. Proto pomocí serveru.Transfer mohou být prostředky serveru zachovány. Na druhou stranu Response.Redirect lze použít k přesměrování uživatele na webovou stránku na jiném serveru, zatímco Server.Transfer lze použít pouze k přesměrování uživatele na webové stránky na stejném serveru. Také pomocí Server.Transfer lze získat přístup k vlastnostem předchozí stránky pomocí nové stránky, ale to není možné pomocí Response.Redirect. Kromě toho Response.Redirect mění adresu URL v adresním řádku prohlížeče, když je přístup na novou stránku, ale při použití serveru. Přenos původní adresy URL je zachován a obsah stránky je právě nahrazen. Uživatel ji tedy nemůže použít k uložení nové stránky do záložek.