我现在在mvc C#项目中工作。我只想从输出缓存中获取一些值。因为它会减少DB中的循环。 所以我用 [OutputCache(持续时间= 1800,VaryByParam =“无”)]
当动作方法第一次被命中时,它正确获取列表值, Acually我指定了持续时间 30分钟。因此,对该操作方法的下一个请求不应该打击我的数据库,它必须提供缓存的结果。
BUt 它导致异常,显示“对象引用未设置为对象的实例”,来自Session
我的代码是:
**这是控制器动作**
[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;
}
}
请给我解决方案。谢谢。
答案 0 :(得分:0)
我相信,因为你正在缓存输出,你需要用
来装饰控制器类[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
以便会话状态可用。此外,似乎HttpGet动词可能更有意义,因为您没有将数据发布到动作中。