4
(this article의 예제를 기반으로) 현지화를 위해 HttpModule을 사용하는 것을 고려하고 있습니다.하지만 궁금합니다. 안전한가요?현지화에 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;
}
}
}
내가 여러 스레드가 잠재적으로 웹 요청을 서비스 할 수있는 인상이었다. 이처럼 HttpModule에서 Current/Current UI Cultures를 설정하는 것이 안전합니까? 그리고 서비스 요청과 관련하여 얼마나 많은 스레드가 관계없이 웹 요청의 수명을 존중합니까?
업데이트 : 지금은 거의 년 동안 생산이 방법을 사용하고있다, 그래서 나는 확실히 그것을 현지화에 대한 HttpModule의를 사용하여 완벽하게 안전하다는 것을 확인할 수 있습니다
.
"문화권 (및 다른 것들)이 다른 스레드로 복사되었습니다"라는 출처를 인용 할 수 있습니까? – DanP
C# 3을 통해 Jeffrey Richters CLR에서 읽었습니다. MO에서 나와 함께하지 않으므로 100 % 확인합니다. 스레드가 새 스레드를 생성하면 스레드는 해당 스레드의 컨텍스트를 새 스레드로 복사합니다. 여기에는 문화가 포함됩니다. 기존 스레드를 호출하는 경우 스레드 풀 스레드를 사용하는 경우 스레드가 다를 수 있습니다. – TimC