2011-02-17 6 views
6

많은 트래픽을 발생시키는 ASP.Net IIS 응용 프로그램에서 타임 스탬프가있는 추적 문이 있습니다. 내 Global.asax Application_BeginRequest 및 Application_PreRequestHandlerExecute 시작 부분에 추적 문을 있어요. 때때로 BeginRequest의 끝과 PreRequestHandlerExecute의 시작 사이에 큰 지연이 있습니다 (즉, 5 초 초과).IIS7에서 Application_BeginRequest와 Application_PreRequestHandlerExecute는 어떻게됩니까?

오랫동안 걸릴 수있는이 두 가지 메소드 호출 사이에서 HttpRequest의 수명주기에는 어떤 변화가 있습니까? Windows Server 2008의 IIS7입니다.

감사합니다.

답변

6

BeginRequest가 이미 발생했으며 지연 시간이 PreRequestHandlerExecute 이전 인 경우 스레드 ID를 기록 할 수 있습니다. 다른 경우 ASP.NET 스레드 민첩성으로 인해 어려움을 겪습니다.

이렇게되는 이유는 세션을 사용할 수 있기 때문입니다. ASP.NET은 HttpContext.Current.Session에서 판독기 기록기 잠금을 사용합니다. 이 변수에 쓰면 동일한 세션의 다른 모든 요청을 동시에 실행할 수 없으며 대기열에 보관됩니다. .NET은 폴링 메커니즘을 사용하여 세션 잠금이 해제되었는지 확인합니다. 나는 또한 당신이 릴리스하고 system.web/compilation/@debug = '거짓'

+0

그래 구축했다고 checken하는 것이 좋습니다 것입니다

, 그것은 세션 잠금이었다. 감사. – nganju

관련 문제