Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在global.asax中设置默认cookie值?_C#_Asp.net_.net - Fatal编程技术网

C# 如何在global.asax中设置默认cookie值?

C# 如何在global.asax中设置默认cookie值?,c#,asp.net,.net,C#,Asp.net,.net,我想为每个访问网站的用户创建一个cookie并为其设置一个默认值。cookie将以英语启动站点,稍后用户可以根据自己的喜好更改语言 我正在global.asax中进行此操作 HttpCookie myCookie = new HttpCookie("Language"); myCookie.Value = "EN"; myCookie.Expires = DateTime.Now.AddDays(1d); HttpContext.

我想为每个访问网站的用户创建一个cookie并为其设置一个默认值。cookie将以英语启动站点,稍后用户可以根据自己的喜好更改语言

我正在global.asax中进行此操作

        HttpCookie myCookie = new HttpCookie("Language"); 
        myCookie.Value = "EN";
        myCookie.Expires = DateTime.Now.AddDays(1d);
        HttpContext.Current.Response.Cookies.Add(myCookie);
我尝试在以下事件中使用上述代码

Application_Start
Application_BeginRequest
Session_Start

在上述所有三个事件中,为每个页面加载将cookie值设置为“EN”。但事实并非如此。当用户选择其他语言时,必须将该语言设置为HttpCookie(“语言”)。

您应该首先检查cookie是否尚未定义。。它已经设置好了吗?您不需要再设置一次。。当用户选择了一种新的语言时,你应该重新定义它。。。一般算法和操作顺序如下

  • 如果用户正在更改语言
    • 将应用程序的语言更改为所选语言
    • 保存到cookie
  • 否则,如果以前的设置已保留在cookie中
    • 将应用程序的语言更改为“保留”
  • 否则就是新的访问
    • 将应用程序的语言更改为默认语言
    • 将cookie设置为默认值
应在每个请求中对此进行评估。。因为用户可以在任何页面更改语言。。 因此,放置代码的适当事件应该是
应用程序\u BeginRequest

这是你的密码。。我将语言参数保存在
CurrentUICulture
中,这样不仅可以在应用程序中的任何位置查询它,而且框架还可以使用它来定制格式。。我还假设用户可以传递一个名为
lang
的参数,该参数包含他想要的语言

void应用程序\u BeginRequest(对象发送方,事件参数e)
{
//如果用户正在更改语言
如果(!String.IsNullOrEmpty(HttpContext.Current.Request[“lang”]))
{
stringslang=HttpContext.Current.Request[“lang”]作为字符串;
//将应用程序的语言更改为所选语言
System.Threading.Thread.CurrentThread.CurrentUICulture=新文化信息(俚语);
//保存到cookie
HttpCookie mycokie=新的HttpCookie(“语言”);
myCookie.Value=俚语;
myCookie.Expires=DateTime.Now.AddDays(1d);
HttpContext.Current.Response.Cookies.Add(mycokie);
}
//设置为已保存在cookie中
else if(HttpContext.Current.Request.Cookies[“语言”])
{
//将应用程序的语言更改为“保留”
String sLang=HttpContext.Current.Request.Cookies[“lang”]。值为字符串;
System.Threading.Thread.CurrentThread.CurrentUICulture=新文化信息(俚语);
}
其他//新访问
{
//将应用程序的语言更改为默认语言
System.Threading.Thread.CurrentThread.CurrentUICulture=新文化信息(“en-us”);
//将cookie设置为默认值
HttpCookie mycokie=新的HttpCookie(“语言”);
myCookie.Value=“en-us”;
myCookie.Expires=DateTime.Now.AddDays(1d);
HttpContext.Current.Response.Cookies.Add(mycokie);
}
}

您需要编写代码,将cookie值更新为用户选择的值。当您说“当用户选择其他语言时”,无论在何处,您都需要从集合中检索该cookie,更新其中的cookie值。只有这样,它才能按你需要的方式工作