Безопасно ли использовать HttpModule для локализации? - PullRequest
4 голосов
/ 10 февраля 2011

Я подумываю об использовании HttpModule для целей локализации (на примере этой статьи ) - но мне интересно, это безопасно?

Вот код для справки:

public class CookieLocalizationModule : IHttpModule
{
    public void Dispose()
    {
    }

    public void Init(HttpApplication context)
    {
        context.BeginRequest += new EventHandler(context_BeginRequest);
    }

    void context_BeginRequest(object sender, EventArgs e)
    {
        // eat the cookie (if any) and set the culture
        if (HttpContext.Current.Request.Cookies["lang"] != null)
        {
            HttpCookie cookie = HttpContext.Current.Request.Cookies["lang"];
            string lang = cookie.Value;
            var culture = new System.Globalization.CultureInfo(lang);
            // is it safe to do this in all situations?
            Thread.CurrentThread.CurrentCulture = culture;
            Thread.CurrentThread.CurrentUICulture = culture;
        }
    }
}

У меня сложилось впечатление, что несколько потоков могут потенциально обслуживать веб-запрос.Безопасно ли устанавливать текущие / текущие культуры пользовательского интерфейса в модуле Http, как этот, и уважать ли его в течение срока службы веб-запроса, независимо от того, сколько потоков задействовано в его обслуживании?1011 *

Я использую этот метод в производстве уже почти год, так что я точно могу убедиться, что совершенно безопасно использовать HttpModule для локализации.

1 Ответ

2 голосов
/ 10 февраля 2011

Да, это должно быть хорошо.

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

...