gpt4 book ai didi

c# - 读/写 Cookie

转载 作者:太空狗 更新时间:2023-10-29 18:08:36 25 4
gpt4 key购买 nike

我今天加入了这个网站,希望有人会好心地向我解释我在 ASP.NET 中使用 cookie 做错了什么。如果我的问题太基础,我仍在学习,但我无法在谷歌上找到答案。我找到的每个答案都显示了我已有的代码。

我正在尝试创建和读取 cookie,我已将此代码放入我的应用程序构造函数中。这就是我尝试初始化 cookie 并将其添加到浏览器的方式。

全局.asax.cs

    public MyApplication()
{
myCookie = new HttpCookie("UserSettings");
myCookie.Value = "nl";
myCookie.Expires = DateTime.Now.AddDays(1d);
Response.Cookies.Add(myCookie);
}

HomeController.cs 中的一个方法(尝试读取 cookie)

    public void setLang(string lang)
{
HttpCookie myCookie = Request.Cookies["UserSettings"];
myCookie.Value = lang;
//rest of method

我在 Response.Cookies.Add(myCookie) 中遇到错误;[HttpException (0x80004005): 响应在此上下文中不可用。]

我的想法是我可能忘记导入命名空间或其他东西,但我似乎没有做任何事情来修复这个错误,任何人都可以指出我正确的方向吗?

最佳答案

您不能使用 Global.asax 构造函数将 cookie 添加到 Response,因为 Global.asax 构造函数是在应用程序开始处理 HTTP 请求之前调用的。

将您的代码从 Global.asax 构造函数移至 Application_BeginRequest 方法:

public void Application_BeginRequest()
{
myCookie = new HttpCookie("UserSettings");
myCookie.Value = "nl";
myCookie.Expires = DateTime.Now.AddDays(1d);
Response.Cookies.Add(myCookie);
}

Global.asax 有许多不同的事件被触发,你只是选择错误。

  • Application_Init:当应用程序第一次初始化时触发。
  • Application_Start:应用程序第一次启动时触发。
  • Session_Start:第一次启动用户 session 时触发。
  • Application_BeginRequest:每次收到新请求时触发。
  • Application_EndRequest:请求结束时触发。
  • Application_AuthenticateRequest:表示请求已准备好进行身份验证。
  • Application_Error:当应用程序中发生未处理的错误时触发。
  • Session_End:每当单个用户 Session 结束或超时时触发。
  • Application_End:当应用程序结束或超时时触发(通常用于应用程序清理逻辑)。

(来自 http://en.wikipedia.org/wiki/Global.asax)

关于c# - 读/写 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11010542/

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