gpt4 book ai didi

c# - 无法读取cookie

转载 作者:行者123 更新时间:2023-11-30 17:50:41 25 4
gpt4 key购买 nike

我在我的网站上使用 asp.net 文化来以不同的语言显示网站,即荷兰语 (nl) 和法语 (fr)。该站点有一个按钮,可以通过将 ?lang=nl 添加到站点的 url 来将站点更改为另一种语言。当您更改语言时,会保存一个 cookie,以便您下次访问时保留该语言。

出于某种原因,该站点将看不到该 cookie。 cookie 在那里并被发送到服务器,我用 fiddler 检查过。有时它的值为 null 有时它是一个空字符串。

这是我在基页类中使用的代码:

protected override void InitializeCulture()
{
if (!Page.IsPostBack)
{
string cookieLang = "";

try
{
cookieLang = HttpContext.Current.Request.Cookies["UserSettings"]["lang"];
}
catch (Exception e)
{
Response.Write(string.Format("<!-- {0} -->", e.Message));
}

if (!string.IsNullOrEmpty(Request.QueryString["lang"]))
{
cookieLang = Request.QueryString["lang"].ToLower();
}

if (!string.IsNullOrEmpty(cookieLang))
{
string selectedCulture = cookieLang == "fr" ? "fr-BE" : "nl-BE";

this.Lang = cookieLang;

UICulture = selectedCulture;
Culture = selectedCulture;

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedCulture);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedCulture);


Response.Cookies["UserSettings"]["­lang"]= Lang;
Response.Cookies["UserSettings"].Expires = DateTime.Now.AddDays(7);
}


base.InitializeCulture();
}
}

谁能告诉我我做错了什么?

编辑:我忘了告诉我这段代码在我的本地电脑上测试时工作正常,但部署在服务器上时却不起作用。

最佳答案

我认为您的错误在于您处理 cookie 的方式和事件的顺序。

  • 第 1 步:尝试从 cookie 中获取区域性名称。如果它存在,请记住它。
  • 第 2 步:尝试从查询字符串中获取区域性名称。如果它存在,请记住它。
  • 第 3 步:根据以前的文化设置当前文化。
  • 第 4 步:将区域性名称保存在 cookie 中。

以下代码对我始终有效:

protected override void InitializeCulture()
{
var cultureName = string.Empty;

// Step 1
var cookie = this.Request.Cookies["culture"];

if (cookie != null)
{
cultureName = cookie.Value;
}

// Step 2
var query = this.Request.QueryString["culture"];

if (query != null)
{
cultureName = query;
}

// Step 3
var culture = new CultureInfo(cultureName);

Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;

// Step 4
this.Response.Cookies["culture"].Value = culture.Name;

base.InitializeCulture();
}

关于c# - 无法读取cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20496721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com