[asp.net] 서버. 전송 대. 응답. 리디렉션

차이 무엇 Server.TransferResponse.Redirect?

  • 각각의 장단점은 무엇입니까?
  • 하나는 언제 다른 것보다 적절한가?
  • 언제 적절하지 않은가?


답변

Response.Redirect단순히 브라우저로 메시지 (HTTP 302) 를 보냅니다 .

Server.Transfer 브라우저가 아무것도 모르는 경우 브라우저가 페이지를 요청하지만 서버는 다른 내용을 반환합니다.


답변

Response.Redirect()새 페이지로 이동하여 주소 표시 줄을 업데이트 한 후 브라우저 기록에 추가합니다. 브라우저에서 뒤로를 클릭 할 수 있습니다.

Server.Transfer()주소 표시 줄을 변경하지 않습니다. 반격 할 수 없습니다.

Server.Transfer()사용자가 내가가는 곳을보고 싶지 않을 때 사용 합니다. 때때로 “로드 중”유형 페이지에서.

그렇지 않으면 항상을 사용 Response.Redirect()합니다.


답변

짧게 : Response.Redirect단순히 다른 페이지를 방문하도록 브라우저에 지시합니다. Server.Transfer서버 요청을 줄이고 URL을 동일하게 유지하며 약간의 버그 bash를 통해 쿼리 문자열 및 양식 변수를 전송할 수 있습니다.

내가 발견하고 동의 한 것 ( source ) :

Server.Transfer와 같은 문장으로 다른 페이지로 사용자를 보낸다는 점에서 비슷 Server.Transfer("WebForm2.aspx")합니다. 그러나이 진술에는 여러 가지 장점과 단점이 있습니다.

첫째,를 사용하여 다른 페이지로 전송하면 Server.Transfer
서버 리소스가 절약됩니다. 브라우저가 리디렉션하도록 지시하는 대신 웹 서버의 “포커스”를 변경하고 요청을 전송합니다. 즉, HTTP 요청이 많이 발생하지 않으므로 웹 서버에 대한 부담이 줄어들고 응용 프로그램이 더 빨리 실행됩니다.

그러나 “전송”프로세스는 서버에서 실행되는 사이트에서만 작동 할 수 있기 때문에주의하십시오. Server.Transfer사용자를 외부 사이트로 보내는 데 사용할 수 없습니다 . 만 Response.Redirect그렇게 할 수 있습니다.

둘째, Server.Transfer브라우저에서 원래 URL을 유지합니다. 이는 디버깅시 혼란을 줄 수 있지만 데이터 입력 기술을 간소화하는 데 실제로 도움이 될 수 있습니다.

그게 다가 아닙니다 :이 Server.Transfer방법에는 두 번째 매개 변수 인 “preserveForm”도 있습니다. True와 같은 문을 사용하여 이를로 설정 Server.Transfer("WebForm2.aspx", True)하면 기존 쿼리 문자열 및 모든 양식 변수를 계속 전송중인 페이지에서 사용할 수 있습니다.

예를 들어 WebForm1.aspx에 TextBox1이라는 TextBox 컨트롤이 있고 preserveForm 매개 변수를 True로 설정하여 WebForm2.aspx로 전송 한 경우을 참조하여 원본 페이지 TextBox 컨트롤의 값을 검색 할 수 있습니다
Request.Form("TextBox1").


답변

Response.Redirect() 다음과 같은 경우에 사용해야합니다.

  • 요청을 서버의 일부 일반 HTML 페이지 나 다른 웹 서버로 리디렉션하려고합니다.
  • 우리는 각 요청마다 서버에 추가 왕복을 발생시키는 것에 신경 쓰지 않습니다.
  • 원래 요청에서 쿼리 문자열 및 양식 변수를 보존 할 필요는 없습니다.
  • 우리는 사용자가 브라우저에서 리디렉션 된 새로운 리디렉션 된 URL을보고 필요한 경우 북마크 할 수 있기를 원합니다.

Server.Transfer() 다음과 같은 경우에 사용해야합니다.

  • 현재 페이지 요청을 동일한 서버의 다른 .aspx 페이지로 전송하려고합니다.
  • 우리는 서버 자원을 보존하고 서버로의 불필요한 왕복을 피하고 싶습니다
  • 쿼리 문자열 및 양식 변수를 유지하려고합니다 (선택 사항)
  • 사용자 웹 브라우저에서 요청을 리디렉션 한 실제 URL을 표시 할 필요가 없습니다.

답변

Response.Redirect는 첫 페이지가 클라이언트에 도착한 페이지를 다른 페이지로 리디렉션합니다 . 따라서 클라이언트는 리디렉션을 알고 있습니다.

Server.Transfer는 페이지의 현재 실행을 종료합니다. 클라이언트가 리디렉션을 모릅니다. 쿼리 문자열과 양식 변수를 전송할 수 있습니다.

따라서 어느 것이 더 좋은지 선택해야 할 필요가 있습니다.


답변

여기에 이미지 설명을 입력하십시오

“response.redirect”및 “server.transfer”는 페이지가 실행되는 동안 한 페이지에서 다른 페이지로 사용자를 전송하는 데 도움이됩니다. 그러나이 전송 / 리디렉션을 수행하는 방식은 매우 다릅니다.

당신이 시각적 인 사람이고 이론보다는 데모를보고 싶다면 아래의 페이스 북 비디오를 통해 더 분명한 차이점을 설명하는 것이 좋습니다.

https://www.facebook.com/photo.php?v=762186150488997

그들 사이의 주요 차이점은 누가 이전을 수행 하는가입니다. “response.redirect”에서는 브라우저가 전송을 수행하고 “server.transfer”는 서버가 전송을 수행합니다. 이 문장을 좀 더 자세하게 이해하려고 노력하겠습니다.

“Server.Transfer”에서 다음은 전송이 수행되는 순서입니다.

1. 사용자는 ASP.NET 페이지로 요청을 보냅니다. 아래 그림에서 요청은 “WebForm1″로 보내지고 “Webform2″로 이동하고 싶습니다.

2. 서버가 “Webform1″실행을 시작하고 페이지 수명주기가 시작됩니다. 그러나 페이지의 전체 수명주기가 완료되기 전에 “WebForm2″에 “Server.transfer”가 발생합니다.

3. “Webform2″페이지 개체가 생성되고 전체 페이지 수명주기가 실행 된 다음 출력 HTML 응답이 브라우저로 전송됩니다.

여기에 이미지 설명을 입력하십시오

“Response.Redirect”에있는 동안 다음은 탐색을위한 일련의 이벤트입니다.

1. 클라이언트 (브라우저)가 페이지에 요청을 보냅니다. 아래 그림에서 요청은 “WebForm1″로 보내지고 “Webform2″로 이동하고 싶습니다.

2. “Webform1″의 라이프 사이클이 시작됩니다. 그러나 라이프 사이클 사이에 “Response.Redirect”가 발생합니다.

3. 이제 서버가 리디렉션을 수행하는 대신 브라우저에 HTTP 302 명령을 보냅니다. 이 명령은 브라우저에 “Webform2.aspx”페이지에 GET 요청을 시작해야 함을 알려줍니다.

4. 브라우저는 302 명령을 해석하고 “Webform2.aspx”에 대한 GET 요청을 보냅니다.

여기에 이미지 설명을 입력하십시오

즉, “Server.Transfer”는 서버에서 실행되고 “Response.Redirect”는 브라우저에서 실행됩니다. “Response.Redirect”는 페이지를 리디렉션하기 위해 두 가지 요청이 필요합니다.

“Server.Transfer”를 사용할 때와 “Response.Redirect”를 사용할 때?

같은 서버에있는 페이지를 탐색하려면 “Server.Transfer”를 사용하고 다른 서버와 도메인에있는 페이지를 탐색하려면 “Response.Redirect”를 사용하십시오.

여기에 이미지 설명을 입력하십시오

다음은 차이점과 사용 시나리오를 요약 한 표입니다.

여기에 이미지 설명을 입력하십시오


답변

Server.Transfer의 아름다움은 당신이 할 수있는 일입니다.

TextBox myTxt = (TextBox)this.Page.PreviousPage.FindControl("TextBoxID");

Response.Redirect가 아닌 Server.Transfer를 사용하는 한 위의 방법을 사용하여 이전 페이지에서 무엇이든 얻을 수 있습니다.