Я использую менеджер ресурсов для загрузки ресурсов на основе культуры threadUI в приложении ASP.NET MVC 5. Я устанавливаю культуру потоков в событии Application_AcquireRequestState, текущая культура сохраняется для каждого пользователя, она загружается веб-сервером в базе данных, как показано ниже.Код:
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
string languageName = default(string);
CultureInfo ci = default(CultureInfo);
if (!User.Identity.IsAuthenticated)
{
languageName = Request.RequestContext.HttpContext.Session["_culture"] == null ?
Helper.ApplicationInformation.AppCulture.Name :
Request.RequestContext.HttpContext.Session["_culture"].ToString();
ci = CultureInfo.GetCultureInfo(languageName.ToUpper());
}
else
{
ci = CultureInfo.GetCultureInfo(Helper.User.Preferences.Language.Name);
}
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
Bridge.Resources.Global.Culture = ci;
Bridge.Resources.Login.Culture = ci;
Bridge.Resources.Search.Culture = ci;
Bridge.Resources.Workspace.Culture = ci;
}
это происходит при установке культуры в другом потоке, фактически, когда 2 пользователя или более меняют языки одновременно,
Я думаю, что существует RaceCondition проблема в диспетчере ресурсов, приводящая к загрузке ресурсов с недопустимой культурой интерфейса пользователя для текущего потока
Я провел исследование по этому поводу и нашел следующие соответствующие ссылки:
ASP.NetФайлы ресурсов MVC иногда неправильно загружаются ResouceManager
ASP.NET MVC 5 ресурсы локализации зависают и не меняют язык, несмотря на изменение CurrentThread.CurrentCulture
ASP.NET Resource Manager RaceCondition в многоязычном приложении
Я пытаюсь скачать пример для мультиязычности, но это также случается, я скачиваю по следующей ссылке:
MultiLanguageExample
добавить 'ThreadSleep (4000)' вaction: index control: Домой, чтобы воспроизвести эту проблему.
Я сделал все упомянутое, но ничего не работало.что я могу сделать, чтобы ресурсы работали согласованно?
спасибо.