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

asp.net-mvc – asp.net mvc无法访问基本控制器中的cookie数据

发布时间:2020-12-16 07:21:19 所属栏目:asp.Net 来源:网络整理
导读:对于每个请求的页面,我需要检查一个cookie或创建它,如果它不存在. 如果cookie在那里,我需要根据该cookie的内容从DB加载一些信息. 为此,我创建了一个名为AppController的基本控制器,我的其他控制器继承自该控制器. 然后我有类似的东西(所以我的所有控制器都可
对于每个请求的页面,我需要检查一个cookie或创建它,如果它不存在.
如果cookie在那里,我需要根据该cookie的内容从DB加载一些信息.

为此,我创建了一个名为AppController的基本控制器,我的其他控制器继承自该控制器.

然后我有类似的东西(所以我的所有控制器都可以使用CurrentSessionValues对象):

public MySession CurrentSessionValues;
    public ApplicationController()
    {
        if (Request.Cookies["MySiteCookie"] == null)
        {
            // create new Record in DB
            CurrentSessionValues = CreateMySession();
            HttpCookie cookie = new HttpCookie("MySiteCookie");
            cookie.Value = CurrentSessionValues.SessionID.ToString;
            Response.SetCookie(cookie);
        }
        else
        {
           // use the value in MySiteCookie to get values from the DB
           // e.g. logged in user id,cart id,etc
        }

    }

当我运行它时,我在default.aspx中收到此错误:

An error occurred while creating a
controller of type
‘Mvc_Learn.Controllers.HomeController’.

If the controller doesn’t have a
controller factory,ensure that it has
a parameterless public constructor.

它在Request.Cookies [“MySiteCookie”]上中断

我应该以其他方式或其他地方做这个逻辑吗?

解决方法

技巧是你必须在构造函数中没有上下文.相反,您应该重写Initialize方法:

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
    //check request context for cookie and do your thang.
}

PS:对于子孙后代,我应该注意为什么会有错误.异常信息的关键部分是在创建控制器时发生错误,在这种情况下,无参数构造函数位是红色鲱鱼.发生的错误是HttpContext的空引用异常.

(编辑:李大同)

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

    推荐文章
      热点阅读