2009-06-29 3 views
0

다양한 옵션을 쉽게 확인할 수 있도록 간단한 "내장 x.yz 초"텍스트를 내 페이지 하단에 표시하려고합니다. (일부 페이지는 "일반"사용자가 이전 페이지에 입력 한 매개 변수를 사용하여 작성되며 사용자는 자신의 결정 결과를보고 싶어합니다.)ASP.NET MVC 및 WebForm의 페이지 생성 시간

asp.net에서 흔적을 사용할 수 있지만 매우 좋지는 않습니다. 사용자에게 친숙하고 성능에별로 좋지 않다는 두려움이 있습니다.

http://www.aspnetzone.de/blogs/peterbucher/archive/2008/03/16/requestdauer-mit-einem-httpmodule-und-response-filter-ausgeben.aspx (httpmodule, 독일어의 웹 페이지)이 좋은 해결책이라고 생각하십니까?

아, 그리고 지금 여러 프로젝트에서 일하고 있어요 때문에 내가 asp.net MVC 페이지, 웹 폼 :)

감사를 위해 그것을하고 싶습니다!

답변

0

확실히 프로덕션 코드에서 흔적을 사용하지 마십시오!

독일어를 읽을 수는 있지만 페이지의 생성자에 현재 DateTime을 저장 한 다음 현재 시간과 그 저장된 시간의 시간차를 OnPreRender 이벤트에서 인쇄 할 레이블의 해당 시간에 인쇄하면됩니다. 시간 표시 - OnPreRender 이벤트는 페이지 라이프 사이클의 마지막 지점으로, 페이지의 렌더링 된 내용을 변경할 수 있습니다 (후 처리의 일종을 수행하지 않고)

라벨의 OnPreRender 이벤트 이후에 과도하게 처리하지 마십시오.

1

HttpContext 개체에는 "start-of-http-request"에 대한 타임 스탬프가 포함되어 있습니다.

사용 가능한 스레드가 사용 가능할 때까지 기다리는 시간을 뺀 것이 중요하지 않은 한 일반적으로 충분하다고 생각합니다.

그래서 당신은 가장 정확한 시간을 원한다면, 당신은 수동으로 Global.asax에

void Application_PreRequestHandlerExecute(object sender, EventArgs e) 
    { 
     HttpContext.Current.Session.Add("LastPageStart", DateTime.Now); 
    } 

에 시작 시간을 저장하고 종료 시간에서에서 뺄 수

DateTime.Now.Subtract(HttpContext.Current.Timestamp).TotalMilliseconds 

될 것입니다 시간을 빌드

Application_EndRequest 

로그를 log4net 또는 그와 같은 것으로 기록하십시오.

물론 페이지 하단에 표시해야하는 경우 단순히 상태를 모니터링하는 정보 대신 페이지에서 직접 수동으로 빼기 만하면됩니다.