Asp.Net MVC изменение значений ресурсов без очистки кэша вручную

В моей Asp.Net пользователи приложения MVC приходят из другой системы, и я регистрирую их, как показано ниже.

IAccount account = null;

if (userType == UserType.SystemUser)
    account = _accountService.CheckSystemUser(userId);
if (userType == UserType.Employee)
    account = _accountService.CheckEmployee(userId);

if (account == null) throw new Exception(ErrorMessages.UserNotFound);

var roles = account.Roles.ToArray();

var principalModel = new CustomPrincipalViewModel
{
    UserId = account.UserId.ToString(),
    FullName = account.FullName,
    Roles = roles,
    Language = account.Language
};

var userData = JsonConvert.SerializeObject(principalModel);
var ticket = new FormsAuthenticationTicket(1, principalModel.FullName, DateTime.Now, DateTime.Now.AddMinutes(30), false, userData);
var encryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
Response.Cookies.Add(cookie);

SetCulture(account.Language.CultureCode);

return Json(new { isSuccess = true, userFullName = account.FullName });

И установка текущей культуры, как это с SetCultureметодом.

private void SetCulture(string culture)
{
    culture = CultureHelper.GetImplementedCulture(culture);
    var cookie = Request.Cookies["_culture"];
    if (cookie != null)
    {
        cookie.Value = culture;
        cookie.Expires = DateTime.Now.AddYears(1);
    }
    else
    {
        cookie = new HttpCookie("_culture")
        {
            Value = culture,
            Expires = DateTime.Now.AddYears(1)
        };
    }
    Response.Cookies.Add(cookie);
}

И мои страницы просмотра я устанавливаю текстовые значения из файлов ресурсов, как показано ниже.

<span class="pageButton"> @Global.Cancel </span>

Но когда я меняю язык пользователя из другой системы и снова вхожу в свою систему, все тексты по-прежнему на предыдущем языке. После обновления страницы с ctrl+F5 все выглядит на истинном языке.

Есть ли способ заставить загружать тексты страниц на новом языке без очистки кэша вручную ?

1 ответ

  1. Проблема в cookie var cookie = Request.Cookies["_culture"];, все еще сохранить старое значение, очистить его при выходе из системы или при попытке войти в систему снова

    И вы можете использовать также Thread.CurrentThreadдля установки культуры

    Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cultureName);
    Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;