输出缓存执行导致会话中的对象引用异常.如何解决这个问题

本文关键字:何解决 解决 问题 异常 执行 缓存 会话 对象引用 输出 | 更新日期: 2023-09-27 18:01:53

我现在在mvc c#项目工作。我只想从输出缓存中取一些值。因为它会减少DB中的轮询。所以i Used [OutputCache(Duration = 1800,VaryByParam = "none")]

当动作方法第一次被击中时,它正确地获取列表值,实际上我分配的时长为30分钟。所以下一个请求的动作方法不应该打击我的DB,它必须给缓存的结果。

但是会导致一个异常,显示"Object reference not set to an instance of an Object ",这是来自Session

My Code is:

**这是Controller Action **

    [HttpPost]
    [OutputCache(Duration = 1800, Location = OutputCacheLocation.Server, VaryByParam = "none")]
    public JsonResult GetStateList()
    {
        Result objResult = new Result();
       VRecruitService.StateClient objState = new VRecruitService.StateClient();
        using (CandidateModel objModel = new CandidateModel())
        {
            objResult.Data = objModel.GetStateList().Data;
        }
        return Json(objResult);
    }

和**这是模型类代码,我得到的异常**

     public static Employee User
     {
        get
        {
            object objUser = HttpContext.Current.Session["userDetails"]; 
            // In this above Session only im getting that Exception.
            if (objUser is VRecruitService.Employee)
                return (VRecruitService.Employee)objUser;
            else
                return null;
        }
        set 
        { 
            HttpContext.Current.Session["userDetails"] = value; 
        }
     }

请给我解决方案。谢谢你。

输出缓存执行导致会话中的对象引用异常.如何解决这个问题

我认为既然要缓存输出,就需要用

来修饰控制器类
[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]

使会话状态可用。此外,似乎HttpGet动词可能更有意义,因为您没有将数据发送到动作。