【问题标题】:Localization in .netcore 2.1 MVC application using CookieRequestCultureProvider使用 CookieRequestCultureProvider 在 .netcore 2.1 MVC 应用程序中进行本地化
【发布时间】:2019-03-29 13:27:41
【问题描述】:

我正在创建 .netcore 2.1 MVC 应用程序。

我们必须支持多种语言的 UI 和控制器返回的消息。

我点击了链接: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-2.1

在任何浏览器上,比如 Chrome,在 2 个选项卡中,我使用用户 A 和用户 B 登录。如果用户 A 更改了他/她的首选语言,他/她的 UI 会以正确的语言反映 UI。都好。 现在,如果我刷新用户 B 选项卡并刷新 UI 语言也会为他/她更改。

我正在使用以下代码:

public IActionResult SetLanguage(string culture, string returnUrl)
{
        Response.Cookies.Append(
            CookieRequestCultureProvider.DefaultCookieName,
            CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
            new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1),IsEssential=true }
        );

        return LocalRedirect(returnUrl);
}

我想我应该通过在 cookie 名称中附加用户 ID 来为每个用户创建单独的 cookie。但这不起作用。

我需要做的更多核心更改可能是 startup.cs 或其他地方,以便应用程序知道新 cookie 的名称不是默认的,线程读取正确的 cookie 并继续加载文化信息。

【问题讨论】:

    标签: c# asp.net-core asp.net-core-mvc


    【解决方案1】:

    现在,如果我刷新用户 B 选项卡并刷新 UI,他/她的语言也会更改

    这是预期行为,因为浏览器不会为登录到站点的用户创建 cookie,但它会在浏览器中为特定域(站点 url)创建 cookie。因此,无论用户 A 还是用户 B 更改语言,都会在浏览器中为所有用户设置 cookie。

    我想我应该通过在 cookie 名称中附加用户 ID 来为每个用户创建单独的 cookie

    您无法完成此操作,因为您只能为 CookieRequestCultureProvider 指定 1 个自定义区域性 cookie 名称,并且无法支持基于用户 ID 的多个 cookie 名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多