我在调试程序时收到此错误消息。
对象引用未设置为对象的实例。
这一行发生了错误:
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中。
有人可以就这个问题给我建议吗?
答案 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
}
}
}
}
希望这有帮助