2013-06-23 12 views
9

Załóżmy, że mamy HttpHandler, który przetwarza każde żądanie, i przypuszczamy, że każdy HttpHandler oblicza wynik pośredni dla każdego żądania i potencjalnie chce przekazać to do obsługi strony, np. Przez Server.Transfer lub Server.Execute poprzez kolekcję HttpContext.ItemsCzy HttpContext.Current.Items wątek bezpieczne między żądania?

Czy każde żądanie ma osobną kopię HttpContext.Items ["sameKey"], gdy każdy z nich osiągnie tę samą stronę .aspx?

Moja obawa wynika z faktu HttpContext.Current jest sama nieruchomość static

Odpowiedz

9

HttpContext obudowuje wszystkie HTTP Szczegółowe informacje na temat indywidualnego HTTP życzenie.

Stąd każdy żądania HttpContext.Items [ "sameKey"] będzie inny egzemplarz.

2

HttpContext.Items jest bezpaństwowcem jedyna droga do „akcji” pomiędzy żądaniami jest Session lub wyższy poziom stan (baza)

+0

W tym przypadku, technicznie nie jest to ta sama prośba nadal, z punktu widzenia przeglądarki ? Ponieważ jest to Server.Transfer, a nie Response.Redirect ... więc technicznie nie jest to nadal to samo żądanie HTTP? – blue18hutthutt

+0

Nie ma znaczenia, każdy Server.transfer będzie miał różne przedmioty; chociaż jest statyczny, opiera się na kontekście wątku (każde żądanie zachowuje swoje elementy w swoim własnym kontekście wątków) –