2008-11-19 4 views
6

누군가가 나를 위해이 동작을 명확히하고 ASP.NET이 새로운 세션과 같은 것을 언제 처리할지 결정할 수 있기를 바랍니다.ASP.NET 및 세션 - 새 브라우저 인스턴스 대 새 브라우저 창

가) Internet Explorer에서 해당 ASP.NET 사이트를로드합니다. 새로운 세션을 시작합니다.
B) 메뉴 - 파일 - 새 창으로 이동하면 동일한 세션 내에 유지됩니다.
C) Internet Explorer의 새 인스턴스를 시작하고 동일한 페이지를로드하면 새 세션이 시작됩니다.

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

답변

13

세션 범위가있는 쿠키를 기반으로하는 세션은 브라우저를 닫을 때 소멸된다는 의미이며 Internet Explorer의 다른 프로세스 내에서 공유되지 않는 것 같습니다.

파일> 새 창으로 새 브라우저 창을 열면 창은 첫 번째 (즉, 동일한 iexplorer.exe)와 동일한 프로세스로 처리됩니다. 시작 메뉴에서 IE를 시작하면 새로운 프로세스가 생기며 작업 관리자에 두 개의 iexplorer.exe가 생깁니다. 여러 프로세스를 생성하는 것은 IE 7 뿐이라고 생각합니다.

IE 8에는 Google 크롬과 마찬가지로 탭/창당 하나의 프로세스가 있습니다. 이러한 브라우저가 프로세스간에 세션 쿠키를 공유하는지는 모르지만 이러한 브라우저 중 하나를 사용하여 테스트 할 때 명심해야 할 점은 분명합니다.

+1

IE6도 그렇게했습니다. 5에 대해 확실하지 않습니다. – GalacticCowboy

+1

IE8은 파일 메뉴에서 "새 세션"옵션을 사용하지 않는 한 탭과 창간에 세션을 공유합니다. 이로 인해 사용자가 IE 8로 변환 할 때 사이트의 일부에서 작동이 중단 될 수 있습니다. – Rozwel

0

새 IE 인스턴스가 동일한 프로세스를 사용하는 새 창인 경우 B에서 발생하는 동일한 쿠키가 있을지 궁금합니다. 일반적으로 쿠키 또는 쿼리 문자열에는 세션을 다양한 클라이언트에 매핑하는 데 사용되는 값이 있습니다.

4

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

+1

IIS와 ASP.NET은 사용자가 느끼는 동작의 차이와 관련이 없습니다. 또한 세션은 많은 IP 주소 (예 : 프록시)에서 동일한 원격 IP 주소에 의존하지 않습니다. –

+0

리모트 IP에 대한 당신의 정확한 생각은 ... 그 생각이 들었을 것입니다. 세션 쿠키 (일반 쿠키와 비교)가 HTML 사양의 일부입니까? – BuddyJoe

+0

나는 그것이 스펙에 포함되어 있다고 생각지 않는다. 세션 쿠키는 ASP.NET에 "알려진"고유 식별자를 보유한다는 점을 제외하고는 다른 쿠키와 전혀 다르지 않다. 이 쿠키는 일반적으로 HTTP 사양에 따라 HTTP 헤더로 전송됩니다. –

0

세션 데이터가 프로세스마다 캐시되고있는 것처럼 보입니다. A)와 B)가 동일한 프로세스에 존재하는 반면, IE의 새로운 인스턴스를 시작하면 새로운 프로세스가 생성됩니다.