2008-11-19 52 views
6

Tôi hy vọng một người nào đó có thể làm rõ hành vi này cho tôi và giải thích cách ASP.NET quyết định khi nào xử lý một thứ như phiên mới.ASP.NET và phiên - Trình duyệt mới so với cửa sổ trình duyệt mới

A) Trong Internet Explorer tôi tải trang ASP.NET đang được đề cập đến. Nó bắt đầu một phiên mới.
B) Nếu tôi vào menu File - New Window ... nó vẫn nằm trong cùng một Session.
C) Nếu tôi khởi chạy phiên bản mới của Internet Explorer và tải cùng một trang, nó sẽ bắt đầu Phiên mới.

Tôi đang bối rối bởi bước C. Tôi hy vọng nó sẽ là cùng một phiên dựa trên IP từ xa của tôi.
IIS/ASP.NET đang làm gì để quyết định đây là phiên mới? Có phải nó đang nhìn vào cổng từ xa của tôi mà phiên bản IE mới đang sử dụng không? Khi bạn khởi động một cửa sổ mới với File - New nó sử dụng cùng một cổng từ xa với tư cách là cha mẹ.

Trả lời

13

Phiên trong IIS/ASP.NET dựa trên cookie có phạm vi phiên, có nghĩa là chúng bị phá hủy khi trình duyệt bị đóng và dường như chúng không được chia sẻ trong các quy trình khác nhau của Internet Explorer.

Khi bạn mở một cửa sổ trình duyệt mới có Tệp> Cửa sổ mới, cửa sổ sẽ được xử lý theo cùng một quá trình với quy trình đầu tiên (ví dụ: cùng iexplorer.exe). Khi bạn lau IE từ trình đơn bắt đầu, bạn sẽ có một quy trình mới và bây giờ bạn sẽ có hai iexplorer.exe trong Trình quản lý tác vụ. Tôi nghĩ rằng đó chỉ là IE 7 sẽ sinh ra nhiều quy trình.

Như một lưu ý phụ, IE 8 sẽ có một quá trình trên mỗi tab/cửa sổ, như Google Chrome có. Tôi không biết liệu các trình duyệt này có chia sẻ cookie phiên trong số các quy trình hay không, nhưng đó chắc chắn là điều cần lưu ý khi thử nghiệm bằng một trong các trình duyệt này.

+1

IE6 cũng đã làm như vậy. Không chắc chắn về 5. – GalacticCowboy

+1

IE8 chia sẻ phiên giữa các tab và cửa sổ trừ khi bạn sử dụng tùy chọn "Phiên mới" trong trình đơn tệp. Điều này đã gây ra hành vi vi phạm trong một số trang web của chúng tôi khi người dùng chuyển đổi sang IE 8. – Rozwel

0

Tôi tự hỏi nếu phiên bản IE mới sẽ có cùng cookie xảy ra trong trường hợp B, trong khi đó là một cửa sổ mới, nó đang sử dụng cùng một quy trình. Nó thường nằm trong cookie hoặc trong chuỗi truy vấn có giá trị được sử dụng để ánh xạ các phiên cho các máy khách khác nhau.

4

Theo mặc định, ASP.NET theo dõi phiên qua cookie. Một cá thể IE mới không có cookie phiên, dẫn đến một phiên mới. Tuy nhiên, bằng cách sử dụng File -> New Window từ một cửa sổ IE hiện có sẽ tạo một cửa sổ mới với các cookie tương tự như "cha mẹ", cho phép ASP.NET sử dụng phiên hiện có.

+1

Tôi cũng nên lưu ý rằng IIS và ASP.NET không thực sự có bất cứ điều gì để làm với sự khác biệt trong hành vi bạn đang nhận thấy. Ngoài ra, hãy nhớ rằng các phiên không dựa vào địa chỉ IP từ xa, thường là giống nhau đối với nhiều người dùng (ví dụ: proxy). –

+0

Chính xác của bạn về IP từ xa ... nên có suy nghĩ về điều đó. Cookie phiên (so với cookie thông thường) có phải là một phần của thông số HTML không? – BuddyJoe

+0

Tôi không tin rằng đó là một phần của thông số, cookie phiên không thực sự khác với bất kỳ cookie nào khác ngoại trừ giá trị của nó xảy ra để giữ một số nhận dạng duy nhất cũng được "biết" với ASP.NET. Cookie này thường được truyền như một tiêu đề HTTP theo mặc định của HTTP. –

0

Dường như dữ liệu phiên đang được lưu trong bộ nhớ cache cho mỗi quá trình. A) và B) tồn tại trong cùng một quá trình, trong khi tung ra một thể hiện mới của IE sẽ tạo ra một quy trình mới.

Các vấn đề liên quan