加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 读/写Cookies

发布时间:2020-12-15 08:10:03 所属栏目:百科 来源:网络整理
导读:我今天加入了这个网站,希望有人能够向我解释我在ASP.NET中做错了什么. 如果我的问题太基础,我仍在学习如此教学,但我无法在谷歌上找到答案.我找到的每个答案都显示了我已经拥有的代码. 我正在尝试创建和阅读cookie,我已将此代码放在我的应用程序构造函数中.这
我今天加入了这个网站,希望有人能够向我解释我在ASP.NET中做错了什么.
如果我的问题太基础,我仍在学习如此教学,但我无法在谷歌上找到答案.我找到的每个答案都显示了我已经拥有的代码.

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

的global.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构造函数向Response添加cookie,因为在应用程序开始处理HTTP请求之前调用了Global.asax构造函数.

将代码从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:用户会话启动时第一次触发.
> Application_BeginRequest:每次有新请求进入时触发.
> Application_EndRequest:请求结束时触发.
> Application_AuthenticateRequest:表示请求已准备好进行身份验证.
> Application_Error:在应用程序中发生未处理的错误时触发.
> Session_End:单个用户会话结束或超时时触发.
> Application_End:应用程序结束或超时时触发(通常用于应用程序清理逻辑).

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读