使用HttpModule进行本地化是否安全?

时间:2011-02-10 01:31:44

标签: asp.net multithreading localization httpmodule

我正在考虑使用HttpModule进行本地化(基于this article中的示例) - 但我很好奇,这样安全吗?

以下是代码,供参考:

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;
        }
    }
}

我的印象是多个线程可能会为Web请求提供服务。在这样的HttpModule中设置当前/当前UI文化是否安全并且在Web请求的生命周期内是否受到尊重,无论服务涉及多少线程?

更新

我已经在生产中使用这种方法已有近一年了,所以我当然可以验证使用HttpModule进行本地化是完全安全的。

1 个答案:

答案 0 :(得分:2)

是的,这应该没问题。

我很确定只有一个线程会为请求提供服务,除非你明确地启动另一个,并且在这种情况下,文化(和其他东西)被复制到另一个线程。