输出缓存执行导致会话中的对象引用异常.如何解决这个问题
本文关键字:何解决 解决 问题 异常 执行 缓存 会话 对象引用 输出 | 更新日期: 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动词可能更有意义,因为您没有将数据发送到动作。