Here’s an example of SetCulture attribute which inside does something like this:
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;
}
I was wondering how does this affect a site with multiple users logged on and each one setting their own culture? What is the scope of a thread here with regards to the IIS worker process (w3wp) that the site is running in?
it’s exactly the same as with normal Asp.Net. The thread is used for this request from start to finish, and then effectively thrown away (if you want to be pedantic the underlying platform thread sticks around for a while).
So multiple users will not be affected – since each one gets their own concurrent thread – I’m doing exactly the same thing on a few sites (including one that regularly gets hit with tens of thousands unique visitors in the space of a couple of hours) and its always fine.