ASP.NET Session bool变量在页面加载中设置为null

时间:2011-12-05 01:13:01

标签: asp.net session boolean

我在调试程序时收到此错误消息。

  

对象引用未设置为对象的实例。

这一行发生了错误:

protected void Page_Load(object sender, EventArgs e)
{
bool x = (bool)Session["IsConnectionInfoSet"];--> error here
if (IsPostBack && x)
//do something with the bool x variable
}

由以下方式调用回发:

protected void btnDo_Click(object sender, EventArgs e)
{
//do something
Session["IsConnectionInfoSet"] = true;
//do something
}

此错误发生在Visual Studio 2008,.NET Framework 3.5中。

有人可以就这个问题给我建议吗?

2 个答案:

答案 0 :(得分:1)

Page_Load方法始终在任何事件处理程序之前运行。因此,在您单击处理程序有机会设置此会话值之前,page_load将运行,找到null并抛出错误。

这是访问此会话值的更安全的方法

bool x = Session["IsConnectionInfoSet"] == null ? false :
          (bool)Session["IsConnectionInfoSet"];

答案 1 :(得分:0)

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        //this is the first time page load.
    }
    else
    {
        if (Session["IsConnectionInfoSet"] != null)
        {
            bool x = (bool)Session["IsConnectionInfoSet"];

            if (x)
            {
                //do something with the bool x variable
            }
        }
    }
}

希望这有帮助