Server.Transfer vs Response.Redirect
Server ja Response on mõlemad ASP.NET-i objektid. Serveriobjekt pakub meetodeid ja atribuute serveriga seotud mitmesuguste toimingute jaoks. Edastus on serveriobjekti meetod ja see saadab töötlemiseks praeguse oleku teabe teisele .asp-failile. Vastusobjekt kirjeldab serveri vastusega seotud meetodeid ja atribuute. Ümbersuunamine on vastusobjekti meetod ja see saadab brauserile sõnumi, pannes selle ühendama teise URL-iga. Ehkki nii Server.Transferit kui ka Response.Redirect saab kasutada kasutaja ülekandmiseks ühelt lehelt teisele, on nad selle ülesande tegeliku täitmise osas erinevad..
Mis on Response.Redirect?
Ümbersuunamine on objekt objektis Response. Kui reageerimismeetodit kutsutakse, saadab see kasutajate brauserisse HTTP-koodi 302 ja soovitud veebilehe URL-i. HTTP-kood 302 teatab kasutajate brauserile, et taotletud ressurss asub teise URL-i all. Kui brauser saab koodi, avab see ressursi uues asukohas. Taotletud veebisait võib asuda samas serveris, kus see päring sisaldas, või see võib asuda mõnes teises serveris. Kui taotlete praeguse lehega samas serveris asuvat veebilehte, saab reageerimismeetodit kasutada järgmiselt:
Response.Redirect (“nextPage.html”);
Mõnes teises serveris asuva veebilehe taotlemisel saab reageerimismeetodit kasutada järgmiselt:
Response.Redirect (“http://www.newServer.com/newPage.aspx”);
Mis on Server.Transfer?
Nagu varem mainitud, on edastus serveriobjekti meetod. Kui edastamismeetodit kutsutakse, muudetakse algset taotlust, et see saaks üle sama serveri mõnele teisele lehele. Kui serveri.Transfer abil taotletakse uut lehte, ei muutu kasutajate veebibrauseris kuvatav URL. Põhjus on see, et ülekandmine toimub serveripoolel ja brauseril pole edastamise kohta teadmisi. Kasutades Server.Transferi jaoks teist ülekoormust (stringi tee, bool konserveerimise vorm) ja määrates teise parameetri tõeseks, saab postitatud vormimuutujad ja päringustringid teha teisele lehele kättesaadavaks.
Mis vahe on Server.Transfer ja Response.Redirect vahel??
Kuigi nii Server.Transferit kui ka Response.Redirect saab kasutada kasutaja teisaldamiseks ühelt lehelt teisele, on nende kahe meetodi vahel mõned erinevused. Lisaks ilmsele süntaktilisele erinevusele teeb Response.Redirect serverisse ringi, samas kui Server.Transfer muudab veebiserveri fookuse teisele veebilehele. Seetõttu saab Server.Transferi abil serveriressursse säilitada. Teisest küljest saab Response.Redirecti kasutada kasutaja ümbersuunamiseks mõne teise serveri veebilehele, samas kui Server.Transferit saab kasutada ainult kasutaja suunamiseks sama serveri veebilehtedele. Samuti kasutades Server.Transfer, saab uue lehe juurde pääseda eelmise lehe atribuutidele, kuid see pole Response.Redirect abil võimalik. Lisaks muudab Response.Redirect URL-i brauseri aadressiribal siis, kui uuele lehele pääseb juurde, kuid kui kasutate serverit. Edastamise ajal säilitatakse algne URL ja lehe sisu lihtsalt asendatakse. Nii et kasutaja ei saa seda uue lehe järjehoidjatesse lisamiseks kasutada.