【发布时间】:2010-10-20 01:49:22
【问题描述】:
执行以下操作时出现错误:
if(Session["value"] != null)
{
// code
}
我得到的错误是这样的:
对象引用未设置为对象的实例。
这是为什么?我总是这样检查我的会话?我用的是MVC框架,和这个有关系吗?
编辑:
代码在Controller的构造函数中:
public class MyController : ControllerBase
{
private int mVar;
public MyController()
{
if (Session["value"] != null)
{
mVar= (int)Session["value"];
}
}
}
【问题讨论】:
-
我发现您检查会话值的方式存在潜在问题。您应该将其设置为“var myvar = Session["value"];"然后检查它是否为空并将其转换回来。在检查和强制转换之间会话有可能变得无效。 - 只是觉得你应该知道:)
-
您不需要
var myvar = Session["value"]; if(myvar != null)...,因为if (Session["value"] != null)可以正常工作。我也不担心得到Session["value"]两次(一次用于!= null,一次用于设置变量),因为优化器应该处理这个问题。注意:您可能会发现?? operator 很有用:mVar= (int)Session["value"] ?? 0;。这不会解决该线程所涉及的空会话问题(因为它不是检查 Session 而是检查 Session 的值)。
标签: c# asp.net-mvc session exists