2013-06-23 39 views
9

Giả sử có một HttpHandler xử lý từng yêu cầu, và giả sử mỗi HttpHandler tính kết quả trung gian cho mỗi yêu cầu và có khả năng muốn truyền điều này đến một trình xử lý trang ví dụ như qua Server.Transfer hoặc Server.Execute thông qua bộ sưu tập HttpContext.ItemsHttpContext.Current.Items có an toàn chỉ giữa các yêu cầu không?

Mỗi yêu cầu sẽ có một bản sao riêng biệt của HttpContext.Items ["sameKey"] khi chúng đạt đến cùng một trang .aspx không?

mối quan tâm của tôi nảy sinh từ thực tế HttpContext.Current thân nó là một thuộc tính tĩnh

Trả lời

9

HttpContext Đóng gói tất cả các thông tin HTTP cụ thể về một cá nhân HTTP yêu cầu.

Do đó, mỗi yêu cầu HttpContext.Items ["sameKey"] sẽ là một bản sao khác.

2

HttpContext.Items là stateless cách duy nhất để "chia sẻ" giữa các yêu cầu là phiên hoặc tiểu bang cấp độ cao hơn (cơ sở dữ liệu)

+0

Trong trường hợp này, về mặt kỹ thuật không phải là này cùng một yêu cầu vẫn còn, từ quan điểm của trình duyệt của view ? Bởi vì đây là Server.Transfer, không phải Response.Redirect ... nên về mặt kỹ thuật, nó vẫn không phải là yêu cầu HTTP giống nhau? – blue18hutthutt

+0

Nó không quan trọng, mỗi Server.transfer sẽ có các mục khác nhau; mặc dù nó tĩnh, nó dựa trên một Thread Context (mỗi yêu cầu giữ các Item của nó trong bối cảnh Thread của nó) –

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