Server.Transfer vs Response.Redirect
Serwer i odpowiedź są obiektami w ASP.NET. Obiekt serwera udostępnia metody i właściwości dla różnych zadań związanych z serwerem. Transfer to metoda obiektu serwera, która wysyła informacje o bieżącym stanie do innego pliku .asp w celu przetworzenia. Obiekt odpowiedzi opisuje metody i właściwości związane z odpowiedzią serwera. Przekierowanie jest metodą obiektu Response i wysyła komunikat do przeglądarki, łącząc go z innym adresem URL. Mimo że zarówno Server.Transfer, jak i Response.Redirect mogą być używane do przenoszenia użytkownika z jednej strony na drugą, różnią się sposobem wykonywania tego zadania.
Co to jest Response.Redirect?
Przekierowanie to metoda w obiekcie Response. Po wywołaniu metody odpowiedzi wysyła ona kod HTTP 302 i adres URL żądanej strony internetowej do przeglądarki użytkownika. Kod HTTP 302 informuje przeglądarkę użytkowników, że żądany zasób znajduje się pod innym adresem URL. Gdy przeglądarka otrzyma kod, otwiera zasób w nowej lokalizacji. Żądana strona internetowa może znajdować się na tym samym serwerze, co strona zawierająca żądanie lub może znajdować się na innym serwerze. W przypadku żądania strony internetowej znajdującej się na tym samym serwerze, co bieżąca strona, można użyć metody odpowiedzi w następujący sposób:
Response.Redirect („nextPage.html”);
W przypadku żądania strony internetowej znajdującej się na innym serwerze można użyć metody odpowiedzi w następujący sposób:
Response.Redirect („http://www.newServer.com/newPage.aspx”);
Co to jest Server.Transfer?
Jak wspomniano wcześniej, Transfer jest metodą obiektu serwera. Po wywołaniu metody przesyłania oryginalne żądanie jest modyfikowane w celu przeniesienia do innej strony na tym samym serwerze. Gdy żądana jest nowa strona za pomocą Server.Transfer, adres URL wyświetlany w przeglądarce internetowej użytkownika nie zmienia się. Wynika to z faktu, że transfer odbywa się po stronie serwera, a przeglądarka nie ma żadnej wiedzy na temat transferu. Korzystając z drugiego przeciążenia dla Server.Transfer (ścieżka łańcucha, bool preserveForm) i ustawiając drugi parametr jako true, zmienne formularzy i ciągi zapytań można udostępnić drugiej stronie.
Jaka jest różnica między Server.Transfer a Response.Redirect?
Mimo że zarówno Server.Transfer, jak i Response.Redirect mogą być użyte do przeniesienia użytkownika z jednej strony na drugą, istnieją pewne różnice między tymi dwiema metodami. Oprócz widocznej różnicy składniowej, Response.Redirect wykonuje objazd do serwera, a Server.Transfer zmienia sposób działania serwera WWW na inną stronę internetową. Dlatego za pomocą Server.Transfer można zachować zasoby serwera. Z drugiej strony Response.Redirect może być wykorzystany do przekierowania użytkownika na stronę internetową na innym serwerze, natomiast Server.Transfer może być wykorzystany tylko do przekierowania użytkownika do stron internetowych na tym samym serwerze. Również za pomocą Server.Transfer, właściwości poprzedniej strony mogą być dostępne przez nową stronę, ale nie jest to możliwe z Response.Redirect. Dodatkowo Response.Redirect zmienia adres URL w pasku adresu przeglądarki, gdy nowa strona jest otwierana, ale podczas korzystania z serwera. Przeniesienie oryginalnego adresu URL zostaje zachowane, a zawartość strony jest właśnie zastępowana. Dlatego użytkownik nie może użyć go do dodania nowej strony do zakładek.