Server.Transfer vs Response.Redirect
Server aj Response sú objekty v ASP.NET. Objekt servera poskytuje metódy a vlastnosti pre rôzne úlohy súvisiace so serverom. Prenos je metóda objektu servera a odosiela informácie o aktuálnom stave do iného súboru .asp na spracovanie. Objekt odpovede popisuje metódy a vlastnosti súvisiace s odpoveďou servera. Presmerovanie je metóda objektu Response a odosiela prehliadačovi správu, ktorá ho pripojí k inej adrese URL. Aj keď je možné na prenos používateľa z jednej stránky na druhú použiť Server.Transfer aj Response.Redirect, líšia sa v tom, ako túto úlohu skutočne vykonávajú..
Čo je Response.Redirect?
Presmerovanie je metóda v objekte Response. Keď sa zavolá metóda Response, odošle HTTP kód 302 a URL požadovanej webovej stránky do prehliadača používateľov. HTTP kód 302 informuje prehliadač užívateľov, že požadovaný prostriedok je umiestnený pod inou URL. Keď prehliadač dostane kód, otvorí zdroj v novom umiestnení. Požadovaná webová stránka sa môže nachádzať na rovnakom serveri ako stránka, ktorá obsahovala požiadavku, alebo by sa mohla nachádzať na inom serveri. Pri žiadosti o webovú stránku, ktorá sa nachádza na rovnakom serveri ako aktuálna stránka, je možné použiť metódu odpovede takto:
Response.Redirect ( "nextPage.html");
Pri žiadosti o webovú stránku umiestnenú na inom serveri je možné použiť metódu odpovede takto:
Response.Redirect ( "http://www.newServer.com/newPage.aspx");
Čo je Server.Transfer?
Ako už bolo spomenuté vyššie, prenos je metóda objektu servera. Po vyvolaní metódy Prenos sa pôvodná požiadavka upraví tak, aby sa preniesla na inú stránku na tom istom serveri. Ak je požadovaná nová stránka pomocou servera. Prenos, webová adresa zobrazená vo webovom prehľadávači používateľov sa nemení. Dôvodom je, že k prenosu dôjde na strane servera a prehliadač nemá žiadne informácie o prenose. Použitím druhého preťaženia pre server.Transfer (reťazcová cesta, bool preserveForm) a nastavením druhého parametra na true, zaúčtované premenné formulárov a reťazce dopytov sa môžu sprístupniť na druhú stránku..
Aký je rozdiel medzi Server.Transfer a Response.Redirect?
Aj keď je možné na prenos používateľa z jednej stránky na druhú použiť Server.Transfer aj Response.Redirect, medzi týmito dvoma metódami existujú určité rozdiely. Okrem zrejmého syntaktického rozdielu, Response.Redirect robí okružnú cestu k serveru, zatiaľ čo Server.Transfer mení zameranie webového servera na inú webovú stránku. Preto pomocou servera.Transfer sa dajú zachovať prostriedky servera. Na druhej strane Response.Redirect sa dá použiť na presmerovanie používateľa na webovú stránku na inom serveri, zatiaľ čo Server.Transfer možno použiť iba na presmerovanie používateľa na webové stránky na rovnakom serveri. Tiež pomocou servera.Transfer môžu vlastnosti predchádzajúcej stránky získať prístup na novú stránku, ale to nie je možné pomocou nástroja Response.Redirect. Okrem toho program Response.Redirect zmení adresu URL v paneli s adresou prehľadávača, keď sa otvorí nová stránka, ale pri použití servera. Prenos pôvodnej adresy URL sa zachová a obsah stránky sa len nahradí. Užívateľ ho teda nemôže použiť na vytvorenie záložiek novej stránky.