본문 바로가기
IT-개발,DB

[개발/asp.net] Server.Transfer / Server.Execute / Respons.Redirect

by SB리치퍼슨 2010. 11. 17.

ASP.NET에서 페이지를 이동하려는 경우 총 3가지의 메서드를 사용할 수 있습니다.

먼저, Server.Execute의 경우 특정 페이지를 함수 처럼 실행 시키고 그 결과 값을 받을 수 있습니다. Server.Execute를 실행 시키면 일단 설정한 페이지로 제어권이 넘어가서 해당 페이지 실행 후 결과값을 받고 다시 원래 페이지로 제어권이 넘어오게 됩니다.
(제어권이 넘어온다는 것은 원래 페이지의 Server.Execute 다음 코드가 계속 실행 된다는 이야기 입니다.)

// TargetPage.aspx의 실행 결과를 받고 싶다면 objTextWriter (TextWriter 개체) 설정
예) Server.Execute("TargetPage.aspx", objTextWriter);

다음으로 Server.Transfer의 경우 설정한 페이지로 제어권을 넘기고 실행이 끝나면 원래 페이지 제어권이 넘어오지 않고 거기서 실행이 끝나 버립니다.
Server.Transfer는 서버에서만 페이지를 이동하고 결과를 클라이언트로 보내기 때문에 클라이언트 브라우져의 URL입력창에는 변화가 없습니다. 그리고, URL에 값을 붙여서 넘기는 Get방식의 사용도 불가능 합니다.

예) Server.Transfer("TargetPage.aspx");

Response.Redirect의 경우 실행하게 되면 서버에서 HTTP헤더를 클라이언트로 보내서 클라이언트가 지정된 주소를 다시 찾게 합니다.
Transfer와는 달리 처음 실행 시 한번 접속이 이루어 지고 보내어진 HTTP 헤더로 클라이언트가 페이지 이동 후 다시 한번 서버로의 접속이 이루어지게 됩니다.
Response.Redirect를 사용할 경우 GET 방식으로 값을 넘기는 것이 가능 합니다.

예) Response.Redirect("TargetPage.aspx", false);

** 만약 Response.Redirect 문이 try~catch 문 내부에 있을때 URL 다음에 2번째 인수를 설정하지 않거나 true로 설정 할 경우에 '스레드가 중단되었습니다.'라는 예외가 catch 됩니다.

두번째 인수는 bool형으로 다음 코드를 계속 실행 할 것인가의 여부를 설정하는 인수 입니다.
Response.Redirect 이후에 실행 할 코드가 더이상 없다면 두번째 인수를 false로 설정 해서 Exception이 발생하지 않도록 할 수 있습니다.

▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
이정호 (potato@dotnetpia.co.kr)
Open Source Board : NeBoard
http://www.neboard.com/
반응형

댓글