Установка текущей культуры с потоками в ASP.NET MVC - PullRequest
6 голосов
/ 22 февраля 2011

Вот пример атрибута SetCulture, который внутри выполняет что-то вроде этого:

    public void OnActionExecuting(ActionExecutingContext
        filterContext)
    {
        string cultureCode = SetCurrentLanguage(filterContext);

        if (string.IsNullOrEmpty(cultureCode)) return;

        HttpContext.Current.Response.Cookies.Add(
            new HttpCookie("Culture", cultureCode)
            {
                HttpOnly = true,
                Expires = DateTime.Now.AddYears(100)
            }
        );

        filterContext.HttpContext.Session["Culture"] = cultureCode;

        CultureInfo culture = new CultureInfo(cultureCode);
        System.Threading.Thread.CurrentThread.CurrentCulture =
            culture;
        System.Threading.Thread.CurrentThread.CurrentUICulture =
            culture;
    }

Мне было интересно, как это влияет на сайт с несколькими пользователями, вошедшими в систему и каждый из которых устанавливает своисобственная культура?Каков охват потока здесь в отношении рабочего процесса IIS (w3wp), на котором работает сайт?

Ответы [ 2 ]

5 голосов
/ 22 февраля 2011

это точно так же, как с обычным Asp.Net. Поток используется для этого запроса от начала до конца, а затем эффективно отбрасывается (если вы хотите быть педантичным, базовая нить платформы остается на некоторое время).

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

0 голосов
/ 08 апреля 2014

Я оспариваю принятый ответ на основании статей ниже. Изменение культуры текущего потока предполагает наличие схожего жизненного цикла между потоками и запросами, что, похоже, не соответствует действительности, по крайней мере, не для всех сценариев. Таким образом, вы можете или не можете иметь проблемы с этим. Пожалуйста, проверьте статьи ниже.

asp.net mvc3 запрос сродства потока

http://forum.springframework.net/showthread.php?572-CallContext-vs.-ThreadStatic-vs.-HttpContext&highlight=LogicalThreadContext

http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx

http://www.hanselman.com/blog/ATaleOfTwoTechniquesTheThreadStaticAttributeAndSystemWebHttpContextCurrentItems.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...