Проверка сеанса, если он пуст или нет - PullRequest
24 голосов
/ 24 августа 2011

Я хочу проверить, что сессия нулевая или пустая, т.е. что-то вроде этого:

if(Session["emp_num"] != null)
{

   if (!string.IsNullOrEmpty(Session["emp_num"].ToString()))
            {
                //The code
            }
}

Или просто

 if(Session["emp_num"] != null)
    {

       // The code
    }

потому что иногда, когда я проверяю только с:

       if (!string.IsNullOrEmpty(Session["emp_num"].ToString()))
                {
                    //The code
                }

Я сталкиваюсь со следующим исключением:

Нулевое исключение ссылки

Ответы [ 5 ]

54 голосов
/ 24 августа 2011

Используйте это, если переменная сеанса emp_num будет хранить строку:

 if (!string.IsNullOrEmpty(Session["emp_num"] as string))
 {
                //The code
 }

Если в нем хранится не строка, а какой-то другой тип, вам следует просто проверить нулевое значение, прежде чем получить доступ к значению, как во втором примере.

10 голосов
/ 07 января 2014
if (HttpContext.Current.Session["emp_num"] != null)
{
     // code if session is not null
}
  • , если вообще ничего не вышло.
5 голосов
/ 24 августа 2011

Вам нужно проверить, что Session["emp_num"] не null, прежде чем пытаться преобразовать его в строку, иначе вы получите исключение нулевой ссылки.

Я бы пошел с вашим первым примером - но выможет сделать его немного более «элегантным».

Есть несколько способов, но на ум приходят следующие:

if (Session["emp_num"] is string)
{
}

или

if (!string.IsNullOrEmpty(Session["emp_num"] as string))
{
}

Это вернет ноль, если переменная не существует или не является строкой.

2 голосов
/ 24 августа 2011

Вы должны сначала проверить, существует ли Session["emp_num"] в сеансе.

Вы можете спросить у объекта сеанса, имеет ли его индексатор значение emp_num, или использовать string.IsNullOrEmpty(Session["emp_num"])

0 голосов
/ 13 декабря 2018

Если это просто Seesion, вы можете применить Null Проверьте с помощью if(Session["Session_name"] !=null)

но если это сеанс списка, вам нужно применить либо 1, либо 2

Вариант 1:

    if (((List<int>)(Session["Session_name"])) != null && 
       (List<int>)Session["Session_name"])).Count > 0)

Вариант 2:

List<int> val= Session["Session_name"] as List<int>`;`//Get the value`
if (val.FirstOrDefault() != null)
...