2011-09-07 2 views
1

.net 3.5 프레임 워크 인 Telerik을 사용하는 asp.net 응용 프로그램을 가지고 있으며 IE8을 사용하여 테스트하고 있습니다.asp.net 응용 프로그램 내에서 세션 내 동일한 페이지의 여러 인스턴스를로드하면 비동기가 아닌 동 기적으로로드됩니다.

나는 최근에 동일한 세션에 대한 여러 브라우저에 응용 프로그램 내의 모든 페이지를로드 할 수있는 요구 사항을 받았습니다.

우리는 세션을 사용하여 페이지로드를 통해 일부 데이터를 유지합니다.

같은 세션에서 두 개 이상의 브라우저가 같은 페이지를로드하면 페이지가 parellel이 아닌 synchronsly로로드됩니다. 페이지의 page_load 이벤트 내에서 로깅을 추가했습니다. 로깅은 한 번에 한 페이지 만로드된다는 것을 의미합니다. 한 브라우저의 page_load가 완료되면 1-2 초가 지체되며, 다음 브라우저의 page_load는 세션의 대기중인 모든 페이지가 완료 될 때까지 실행됩니다.

나의 초기 생각은 이것이 차단 문제였습니다. asp.net 페이지 내의 코드와 여러 페이지에 걸친 블로킹을 일으킬 수있는 정적 인스턴스에 대한 페이지에서 참조하는 코드를 검토 한 결과 아무 것도 발견하지 못했습니다.

위에서 설명한 바와 같이 synchonus page_load firing 동작의 원인에 대한 아이디어가 있습니까? 잠재적으로 IE8 문제 일 수도 있고 세션 차단과 같은 유형 일 수도 있습니까?

감사합니다.

답변

1

체크 아웃 this SO discussion. 나는 받아 들여진 대답이 당신이 찾고있는 것과 정확히 일치한다고 믿습니다.

+1

고마워요! 이 문제는 Session에 의해 발생한 것으로 보입니다. * ASP.NET 세션 상태에 대한 액세스는 세션마다 독점적입니다. 즉, 두 명의 서로 다른 사용자가 동시 요청을하면 각 개별 세션에 대한 액세스가 동시에 부여됩니다. 그러나 동일한 SessionID 값을 사용하여 동일한 세션에 대해 두 개의 동시 요청이 이루어지면 첫 번째 요청은 세션 정보에 독점적으로 액세스합니다. 두 번째 요청은 첫 번째 요청이 완료된 후에 만 ​​실행됩니다. – Josh

관련 문제