인증이 필요한 모든 페이지에 대해 System.Web.UI.Page를 확장하는 중개 클래스가 있습니다. 클래스는 주로 사용자 정의 인증 처리를 수행합니다.예외를 throw하지 않고 Response.Redirect()를 수행하는 것이 안전 할 때는 언제입니까?
액세스가 불충분 한 사용자가 페이지 방문을 시도 할 때 더 이상의 페이지 이벤트 (예 : Page_load)가 실행되는 것을 방지하면서 사용자를 로그인 페이지로 리디렉션하려고합니다. 마음에 떠오른 첫 번째 해결책은 Response.Redirect의 기본 구현이었습니다. 물론 이것에 대한 단점은 ThreadAbortExceptions이 발생할 가능성입니다.
그럼 내 질문은 다음과 같습니다. 페이지 라이프 사이클 동안 (실제로) ThreadAbortException이 발생하지 않고 Response.Redirect()를 실행하는 것이 실제로 안전 할 때?
public class CustomPage : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (!IsValid())
Response.Redirect("login.aspx", true);
}
}
왜 ThreadAbortException을 발생시키지 않겠습니까? 요청 된 페이지의 더 이상의 처리를 중지하기 위해 throw됩니다. –
나는 그것이 사실이라고 생각한다. 그러나 VS에서 자동 예외 중단을 설정하면 Response.Redirect()가 항상 예외를 throw하지는 않지만 여전히 페이지의 나머지 부분은 건너 뜁니다. – ddechant