J'ai une application ASP.Net MVC-5 et je souhaite vérifier si la valeur de session est nulle avant d'y accéder. Mais je ne peux pas le faire.

//Set
System.Web.HttpContext.Current.Session["TenantSessionId"] = user.SessionID;
// Access
int TenantSessionId = (int)System.Web.HttpContext.Current.Session["TenantSessionId"];

J'ai essayé de nombreuses solutions de SO

Tentative

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

Veuillez me guider.

Erreur: référence NULL

13
Unbreakable 25 janv. 2017 à 18:32

5 réponses

Meilleure réponse
if(Session["TenantSessionId"] != null)
{
  // cast it and use it
  // The code
}
19
Ahmed Ragheb 25 janv. 2017 à 15:35

L'exception NullReferenceException provient de la tentative de conversion d'une valeur nulle. En général, il vaut mieux utiliser as au lieu d'une diffusion directe:

var tenantSessionId = Session["TenantSessionId"] as int?;

Cela ne soulèvera jamais d'exception. La valeur de tenantSessionId sera simplement nulle si la variable de session n'est pas définie. Si vous avez une valeur par défaut, vous pouvez utiliser l'opérateur de fusion nul pour vous assurer qu'il y a toujours une valeur:

var tenantSessionId = Session["TenantSessionId"] as int? ?? defaultValue;

Ensuite, ce sera soit la valeur de la session, soit la valeur par défaut, c'est-à-dire jamais nulle.

Vous pouvez également simplement vérifier si la variable de session est nulle directement:

if (Session["TenantSessionId"] != null)
{
    // do something with session variable
}

Cependant, vous devrez limiter tout votre travail avec la variable de session pour être à l'intérieur de ce conditionnel.

2
Chris Pratt 25 janv. 2017 à 15:50

Vérifiez si la session est vide / nulle ou non dans la version C # MVC inférieure à 5.

if (!string.IsNullOrEmpty(Session["TenantSessionId"] as string))
{
    //cast it and use it
    //business logic
}

Vérifiez si la session est vide / nulle ou non dans la version C # MVC supérieure à 5.

if(Session["TenantSessionId"] != null)
{
    //cast it and use it
    //business logic
}
0
Pergin Sheni 30 oct. 2019 à 04:58

Comme [] agit en tant que Indexer (comme une méthode sur la classe) et dans ce cas, session est null et vous ne pouvez pas effectuer < em> Indexation dessus.

Essaye ça..

if(Session != null && Session["TenantSessionId"] != null)
{
   // code
}
3
Rahul Hendawe 25 janv. 2017 à 15:59

Vérifier si la session est vide / nulle ou non

If (! string.IsNullOrEmpty (Session ["TenantSessionId"] en tant que chaîne)) {

// écrire ici du code pour la logique

}

-1
Pergin Sheni 29 oct. 2019 à 12:09