Мы влияем на многочисленных пользователей в ASP.NET, когда мы устанавливаем Поток CurrentCulture/CurentUICulture?

Когда мы устанавливаем CurrentCulture и/или CurrentUICulture, мы делаем это на текущем потоке как это:

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

Doest это означает, что мы могли влиять на настройки культуры многочисленных пользователей нашего веб-приложения как их запросы, может снова использовать потоки от пула?

Я работаю над приложением MVC ASP.NET, где у каждого пользователя может быть собственная установка культуры, указанная в его данных аккаунта. Когда пользователь входит в систему, установка культуры получена от базы данных и должна быть установлена как текущая культура.

Мое беспокойство - то, что установка текущей культуры на текущем потоке может влиять на другой пользовательский запрос, снова использующий этот поток. Я еще более заинтересован, читая это:

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

10
задан Nikolay 19 May 2010 в 07:30
поделиться

2 ответа

Рокки Лхотка написал в блоге об этом самом вопросе несколько лет назад - и сообщил, что Скотт Гатри сказал ему следующее:

ASP.NET гарантирует, что, даже если они переключите свою нить, CurrentPrincipal и культура свойства из исходного потока перенесите в новую ветку.Этот выполняется автоматически, и вам не нужно беспокоиться о потере этих ценностей. Ух!

Однако локальное хранилище потока не переносится.

В статье содержится более интересный материал (он описывает обстоятельства, при которых ASP.NET будет переключать потоки - по крайней мере, по состоянию на 2006 год), и ее определенно стоит прочитать. К сожалению, Rocky не дает ссылки на авторитетный источник. Отражатель здесь тоже не очень помогает, поскольку все соответствующие методы завершаются собственными вызовами.

Сказав это, это имеет смысл: API строго подразумевает, что текущая культура передается через переключатели контекста, как текущий принципал, и я никогда не видел, чтобы ASP.NET противоречила ожидаемому поведению.

6
ответ дан 4 December 2019 в 03:15
поделиться

В стандартном ASP.NET я использовал поля страницы UICulture и Culture.Затем контексты потока изменяются по мере того, как в потоке выполняются разные части запроса.

Говоря, что я не знаком с тем, как MVC управляет им, но я считаю, что это должно применяться в представлении, и, учитывая, что представления являются страницами просмотра, которые наследуются от страницы, они будут иметь UICulture и Culture как согласно стандарту ASP.NET ...

Говоря все это, не принимайте это как евангелие, как я уже сказал, я мало что сделал с ASP MVC ...

0
ответ дан 4 December 2019 в 03:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: