2010-05-19 8 views
9

Kiedy ustawić CurrentCulture i/lub CurrentUICulture robimy to od aktualnego wątku tak:Czy wpływamy na wielu użytkowników w ASP.NET, gdy ustawiamy wątek CurrentCulture/CurentUICulture?

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");

Doest to znaczy możemy wpłynąć ustawienia kulturze wielu użytkowników naszej aplikacji internetowej, jak ich wnioski mogą ponownie wykorzystać wątki z puli?

Pracuję nad aplikacją ASP.NET MVC, w której każdy użytkownik może mieć własne ustawienie kultury określone w jego danych konta. Kiedy użytkownik się loguje, ustawienie kultury jest pobierane z bazy danych i musi być ustawione jako aktualna kultura.

Obawiam się, że ustawienie aktualnej kultury w bieżącym wątku może wpłynąć na inne żądanie użytkownika ponownego użycia tego wątku. Jestem jeszcze bardziej zaniepokojony czytając to:

ASP.NET not only uses a thread pool, but may switch threads during request processing.

Odpowiedz

5

Rocky Lhotka blogged about this very question kilka lat temu - i poinformował, że Scott Guthrie powiedział mu to:

ASP.NET zapewnia, że ​​nawet jeśli ey przełączyć wątek, CurrentPrincipal i kultury właściwości z oryginalnego wątku przeniesienia do nowego wątku. Ten numer jest automatyczny i nie musisz martwić się o utratę tych wartości przez . Whew!

Jednak pamięć lokalna wątku nie jest przenoszona do przodu.

Artykuł zawiera bardziej ciekawy materiał (on określa okoliczności, w których będzie ASP.NET przełącznik wątki - przynajmniej od 2006 roku), a to z pewnością warto przeczytać. Niestety, Rocky nie podaje linku do wiarygodnego źródła. Odbłyśnik nie jest tu zbyt pomocny, ponieważ wszystkie odpowiednie metody kończą się wywołaniami natywnymi.

Powiedziawszy to, ma to sens: interfejs API silnie implikuje, że obecna kultura jest przenoszona przez przełączniki kontekstu, takie jak bieżący element główny, i nigdy nie widziałem, aby ASP.NET był sprzeczny z oczekiwanym zachowaniem.

+0

Dzięki za link do tego wpisu na blogu. To naprawdę interesujące i oczyszcza drugą część moich zmartwień - przełączanie wątków odbywa się podczas pojedynczego żądania tylko wtedy, gdy musi zostać wykonana operacja asynchroniczna, więc przynajmniej nie jest to przypadek, a ponieważ kultura jest przenoszona do przodu, powinna nie stanowi problemu. Pozostaje tylko przywracanie wątków z puli po pojawieniu się nowego żądania, ale jeśli weźmiemy pod uwagę, że ustawiliśmy kulturę dla każdego żądania w programie OnActionExecuting, to prawdopodobnie nie stanowi to problemu. – Nikolay

0

W standardowym ASP.NET użyłem strony pola UIculture i kultury. Wątki wątków są następnie zmieniane, ponieważ różne części żądania są wykonywane w wątku.

Mówiąc, że nie jestem zaznajomiony z tym, w jaki sposób zarządza nim MVC, ale uważam, że powinien on być zastosowany w widoku, i biorąc pod uwagę, że widoki są widokami dziedziczącymi po stronie, będą miały UICulture i Culture zgodnie z normą ASP.NET ...

mówiąc to wszystko, nie ma to jak gospel, jak mówię, ja nie zrobiłem dużo z ASP MVC ...

Powiązane problemy