2010-04-03 4 views
1

asp.net에서 Response.Redirect()의 두 가지 오버로드 메소드가 존재합니다.asp.net에서 Response.Redirect()를 작성하는 방법

  1. 공공 서브가 리디렉션 (_ 문자열로 URL이)

  2. 공공 하위 리디렉션 (부울 _ URL을 문자열로 _ endResponse _)

내가 좋아하는 것

이 둘 사이의 차이를 알고 싶습니까? 그리고 어느 것을 사용해야합니까?

+1

Microsoft 설명서를 사용해 보셨습니까? http://msdn.microsoft.com/en-us/library/08za4s98(v=VS.71).aspx – Lazarus

답변

1

첫 번째 오버로드는 다른 URL로 리디렉션됩니다. 두 번째 오버로드는 현재 코드가 계속 실행되는지 여부를 말할 수 있습니다. 코드 블록 중간에 Response.Redirect("http://philippursglove.com", True)이 발생하면 코드 블록의 나머지 부분은 데이터베이스 업데이트를 실행하고 실행합니다.

어느 쪽을 사용해야하는지에 관해서는 더 많은 코드의 컨텍스트에서 보지 않고 말할 수 없습니다.

Server.Transfer도보십시오. Response.Redirect와 거의 동일하지만 브라우저에 아무 것도 보내지 않고 웹 서버에서 약간의 압박감을 느낄 수 있습니다. Server.Transfer vs Response.Redirect을 참조하십시오.

+0

"[true를 전달하면 즉시 실행이 종료되고 false를 전달하면 스레드가 완료 될 수 있습니다 .] (http://stackoverflow.com/edit-suggestions/4197) " –

1

둘 다 브라우저에 지정된 페이지를 요청하는 302 응답을 보냅니다. Response.Redirect ("/")가 기본적으로 사용자를 새 페이지로 리디렉션하는 경우 기본적으로 응답을 계속하지 않으려 고합니다.

두 번째 매개 변수를 false로 설정해야하지만 응답을 계속 처리하려면.

그래서이 예 a에서 1이됩니다 : 스레드가 리디렉션 후 실행 유지하기 때문에이 예 a에서

var a = 1; 
Response.Redirect("/aboutus.aspx"); 
a = 2; 

은 2가됩니다.

var a = 1; 
Response.Redirect("/aboutus.aspx", false); 
a = 2; 

try catch에서 사용하는 경우주의하십시오. 약간 이상한 점은 다음 예에서 a이 2가 될 것임을 의미합니다!

var a = 1; 
try 
{ 
    Response.Redirect("/aboutus.aspx"); 
} 
finally 
{ 
    a = 2; 
} 
관련 문제