Server.Transfer vs Response.Redirect
Serverul și răspunsul sunt obiecte din ASP.NET. Obiectul server furnizează metode și proprietăți pentru diverse sarcini legate de un server. Transferul este o metodă a obiectului Server și trimite informații despre starea curentă unui alt fișier .asp pentru procesare. Răspunsul obiect descrie metode și proprietăți legate de răspunsul unui server. Redirecționarea este o metodă a obiectului Răspuns și trimite un mesaj browserului, făcându-l conectat la o altă adresă URL. Chiar dacă serverul Server.Transfer și Response.Redirect pot fi utilizate pentru a transfera un utilizator dintr-o pagină în alta, acestea diferă în modul în care îndeplinesc de fapt această sarcină.
Ce este Response.Redirect?
Redirecționarea este o metodă în obiectul Răspuns. Atunci când se apelează metoda de răspuns, acesta trimite codul HTTP 302 și adresa URL a paginii web solicitate în browser-ul utilizatorilor. Codul HTTP 302 informează browser-ul utilizatorilor că resursa solicitată este localizată sub o altă adresă URL. Când browserul primește codul, acesta deschide resursa în noua locație. Pagina web solicitată poate fi localizată pe același server ca pagina care conținea cererea sau ar putea fi reședința pe un alt server. Atunci când solicitați o pagină web care se află pe același server ca pagina curentă, metoda de răspuns poate fi utilizată după cum urmează:
Response.Redirect ( „nextPage.html“);
Atunci când solicită o pagină web care se află pe un alt server, metoda de răspuns poate fi utilizată după cum urmează:
Response.Redirect ( „http://www.newServer.com/newPage.aspx“);
Ce este Server.Transfer?
După cum am menționat mai devreme, transferul este o metodă a obiectului server. Când se apelează metoda Transfer, cererea inițială este modificată pentru a fi transferată în altă pagină din același server. Când se solicită o nouă pagină utilizând Server.Transfer, adresa URL afișată în browserul web al utilizatorilor nu se modifică. Acest lucru se datorează faptului că transferul are loc în partea de server și browserul nu are cunoștințe despre transfer. Prin utilizarea celei de-a doua suprasarcini pentru Server.Transfer (calea șirului, bool preserveForm) și setarea celui de-al doilea parametru ca fiind adevărat, variabilele de postare și șirurile de interogări pot fi puse la dispoziția celei de-a doua pagini.
Care este diferența dintre Server.Transfer și Response.Redirect?
Chiar dacă atât Server.Transfer cât și Response.Redirect pot fi utilizate pentru a transfera un utilizator dintr-o pagină în alta, există unele diferențe între cele două metode. În afară de diferența aparentă sintactică, Response.Redirect efectuează un transfer dus-întors către server, în timp ce Server.Transfer modifică focalizarea serverului web pe o altă pagină web. Prin urmare, prin utilizarea Server.Transfer, resursele serverului pot fi păstrate. Pe de altă parte, Response.Redirect ar putea fi utilizat pentru a redirecționa utilizatorul către o pagină web dintr-un alt server, în timp ce Server.Transfer poate fi utilizat doar pentru a redirecționa utilizatorul către pagini web de pe același server. De asemenea, utilizând Server.Transfer, proprietățile paginii anterioare pot fi accesate de noua pagină, dar acest lucru nu este posibil cu Response.Redirect. În plus, Response.Redirect modifică adresa URL în bara de adrese a browser-ului când este accesată noua pagină, dar când se utilizează Server.Transfer URL-ul original este păstrat și conținutul paginii este înlocuit. Deci, utilizatorul nu-l poate folosi pentru a marca noua pagină.