MVC 5 ASP.Net交换语言

问题描述

我有一个ASP.net MVC 5应用程序,该应用程序已经正常工作了多年。

最近在法语和英语之间切换已停止。它已部署在Windows Azure上。

语言的切换在开发机器上仍然可以正常工作,并使用以下代码

        public ActionResult SetLanguage(string culture)
        {
            Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(culture);
            Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
            // Validate input
            culture = MSP.Services.CultureHelper.GetImplementedCulture(culture);
            // Save culture in a cookie
            HttpCookie cookie = Request.Cookies["_culture"];
            if (cookie != null)
                cookie.Value = culture;   // update cookie value
            else
            {
                cookie = new HttpCookie("_culture");
                cookie.Value = culture;
            }
            cookie.Expires = DateTime.Now.AddYears(1);
            Response.Cookies.Add(cookie);


            return RedirectToAction("Index","Home",new { message = $"The language has Now been set to {culture}" });
        }

不确定Windows Azure上是否有更改?

解决方法

我在添加cookie之前添加了以下行:

cookie.Secure = true;

它现在可以在所有浏览器上使用。

事实证明,这是Chromium浏览器进行的一项必要更改,该更改自2020年夏天开始逐步推出。IEcookie应该是安全的。