2012-12-05 1 views
10

내 직원 페이지에 Response.Redirect이 있습니다. 샐러리 페이지로 리디렉션됩니다."EndResponse"가 ASP.Net 페이지의 성능을 향상시킬 수 있습니까?

Response.Redirect ("Salary.aspx"); 

다음과 같이 예외 처리를 추가 할 때까지 제대로 작동했습니다. ..

try 
{ 
    Response.Redirect ("Salary.aspx"); 
} 
catch(Exception ex) 
{ 
//MyLog(); 
    throw new Exception(); 
} 

//Remaining code in event handler 

는 "스레드가 중단되었습니다"라는 새로운 예외를 발생 나는이 리디렉션에 대한 거짓 endResponse를 설정하여 방지 할 수 있다는 것을 알게 된 새로운 예외의

Response.Redirect(url, false); 
Context.ApplicationInstance.CompleteRequest(); 

설명 : 그것은 항상 예외를 throw하지만 프레임 워크에 의해 처리되었습니다. try..catch를 추가 한 이후로 잡았습니다 (새로운 예외가 발생했습니다).

참고 : CompleteRequest은 HTTP 필터와 모듈을 추가로 무시하지만 doesn 'bypa 현재 페이지 수명주기의 추가 이벤트

참고 : Response.Redirect는 현재 페이지의 처리를 끝내기 위해이 예외를 throw합니다. ASP .Net 자체가이 예외를 처리하고 처리를 계속하려면 ResetAbort을 호출합니다.

질문 "거짓 endResponse 설정"

  1. 여부는 예외 이후 증가 성능은 슬로우되지 않는 수 있습니까?
  2. 페이지 라이프 사이클 이벤트가 종료되지 않았기 때문에 "endResponse를 false로 설정"할 수 있습니까? 성능이 감소합니까?

    1. 당신이 이벤트 핸들러에 코드를 나머지, false으로 endResponse을 설정하면

    함정이 실행됩니다. 따라서 if에서 나머지 코드를 확인해야합니다 (리디렉션 기준이 충족되지 않았는지 확인). 응답 (Response.Redirect(url) 또는 Response.Redirect(url, true)를) 종료

는 참조

  1. Why Response.Redirect causes System.Threading.ThreadAbortException?
  2. ASP.NET exception "Thread was being aborted" causes method to exit
+0

'성능'은 다양한 측면에서 측정 할 수 있습니다! 너 정확히 뭘 기대하는거야? –

+0

@huMptyduMpty 다음과 같은 관점에서의 성능 1) 페이지 응답 시간 2) 메모리 사용량 – Lijo

+1

또한 웹 사이트 성능을 향상시키기 위해이 기사 [http://msdn.microsoft.com/en-us/magazine/cc163854 .aspx)도 몇 가지 정보를 줄 수 있습니다. –

답변