2011-02-10 44 views
4

我正在考慮使用HttpModule進行本地化(基於this article中的示例) - 但我很好奇,這是否安全?使用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; 
     } 
    } 
} 

我的印象是,多個線程可能服務的Web請求下。將當前/當前UI文件設置爲這樣的HttpModule是否安全並且在Web請求的生命週期中是否遵守這些文件是安全的,無論涉及多少個線程服務?

更新:

我已經在生產中使用這種方法了近一年了,所以我肯定能證明,這是完全可以放心使用一個HttpModule本地化。

回答

2

是的,這應該沒問題。

我很確定只有一個線程會爲請求提供服務,除非你明確地啓動另一個線程,並且在這種情況下,文化(和其他事物)被複制到另一個線程。

+0

您能否引用「文化(和其他事物)被複制到另一個線索」的來源? – DanP 2011-02-10 14:10:29

相關問題