문제

나는 누군가가 나를 위해이 행동을 명확히 할 수 있기를 바라고 있으며, ASP.NET이 새로운 세션처럼 취급 할시시기를 어떻게 결정하고 있는지 설명합니다.

a) Internet Explorer에서 문제의 ASP.NET 사이트를로드합니다. 새로운 세션을 시작합니다.
b) 메뉴 파일 - 새 창으로 이동하면 같은 세션 내에 있습니다.
c) 새 인터넷 익스플로러 인스턴스를 시작하고 같은 페이지를로드하면 새 세션이 시작됩니다.

나는 단계 C에 의해 혼란스러워. 나는 그것이 나의 원격 IP를 기반으로 같은 세션이 될 것으로 기대하고있다.
IIS / ASP.NET은 이것이 새로운 세션이라고 결정하기 위해 무엇을하고 있습니까? IE의 새 인스턴스가 사용하는 원격 포트를보고 있습니까? 파일로 새 창을 시작하면 새로운 원격 포트를 부모와 동일한 원격 포트를 사용합니다.

도움이 되었습니까?

해결책

IIS/ASP.NET의 세션은 세션 범위가있는 쿠키를 기반으로합니다. 즉, 브라우저가 닫힐 때 파괴되며 인터넷 익스플로러의 다른 프로세스 내에서 공유되지 않은 것 같습니다.

파일> 새 창으로 새 브라우저 창을 열면 창은 첫 번째와 동일한 프로세스 (예 : 동일한 explorer.exe)로 처리됩니다. 시작 메뉴에서 Lauch IE를 Lauch에서 새 프로세스를 얻을 수 있으며 이제 작업 관리자에 IEXPLORER.EXE가 두 개 있습니다. 여러 프로세스를 생성하는 것은 IE 7 일 뿐이라고 생각합니다.

참고로, IE 8에는 Chrome과 같이 탭 / 창 당 단일 프로세스가 있습니다. 이 브라우저가 프로세스간에 세션 쿠키를 공유하는지는 모르겠지만 이러한 브라우저 중 하나를 사용하여 테스트 할 때 명심해야 할 사항입니다.

다른 팁

기본적으로 ASP.NET은 쿠키를 통해 세션을 추적합니다. 새로운 IE 인스턴스에는 세션 쿠키가 없어 새 세션이 발생합니다. 그러나 기존 IE 창에서 파일 -> 새 창을 사용하면 "부모"와 동일한 쿠키가있는 새 창이 생성되어 asp.net이 기존 세션을 사용할 수 있습니다.

새로운 IE 인스턴스가 사례 B에서 발생하는 것과 동일한 쿠키를 가질 수 있는지 궁금합니다. 여기서 새 창은 동일한 프로세스를 사용하고 있습니다. 일반적으로 쿠키 또는 쿼리 스트링에 있습니다. 세션을 다양한 클라이언트에 매핑하는 데 사용되는 값이 있습니다.

세션 데이터가 프로세스 당 캐시되고있는 것으로 보입니다. a) 및 b)는 동일한 프로세스에 존재하는 반면, IE의 새로운 인스턴스를 시작하면 새로운 프로세스가 생성 될 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top