问题描述
我有一个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应该是安全的。