Переменная bool ASP.NET Session установлена ​​в ноль при загрузке страницы - PullRequest
1 голос
/ 05 декабря 2011

Я получаю это сообщение об ошибке при отладке моей программы.

Ссылка на объект не установлена ​​для экземпляра объекта.

Эта ошибка происходит в этой строке:

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 ]

1 голос
/ 05 декабря 2011

Метод Page_Load всегда запускается перед любыми обработчиками событий. В результате page_load запустится, найдет ноль и выдаст ошибку, и все, прежде чем вы нажмете, у обработчика есть шанс установить это значение сеанса.

Вот более безопасный способ получить доступ к этому значению сеанса

bool x = Session["IsConnectionInfoSet"] == null ? false :
          (bool)Session["IsConnectionInfoSet"];
0 голосов
/ 05 декабря 2011
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
            }
        }
    }
}

Надеюсь, это поможет

...