C # Impossible de vérifier la session existe?
J'ai une erreur quand je ne les suivants:
if(Session["value"] != null)
{
//code
}
L'erreur que je reçois est: est-ce
Objet de référence non définie à une instance d'un objet.
Pourquoi est-ce? Je vérifie toujours mes session de cette façon? Je suis en utilisant le Framework MVC, cela a quelque chose à faire avec elle?
EDIT:
Le code est dans le constructeur d'un Contrôleur:
public class MyController : ControllerBase
{
private int mVar;
public MyController()
{
if (Session["value"] != null)
{
mVar= (int)Session["value"];
}
}
}
source d'informationauteur Martijn
Vous devez vous connecter pour publier un commentaire.
La session n'existe plus réellement qu'au cours de la traitement d'une action - je ne m'attends pas qu'il soit valable dans le constructeur d'un contrôleur. Par exemple, le contrôleur de puissance (de ce que j'en sais) être ré-utilisé entre les demandes.
Vous aurez besoin pour ce faire soit dans l'action (méthode), ou (peut-être plus approprié) dans une action de filtre, ou la
OnActionExecuting
(etc) méthode(s):Le [] est un indexeur, il agit comme une méthode de la classe.
Dans ce cas, la Session est nul et vous ne pouvez pas effectuer l'indexation sur elle.
Ce faire:
Vous aurez à le faire de cette façon-
Vous obtenez cette erreur, en raison de la "Session" l'objet est null. Par conséquent, il est impossible de regarder le ["valeur"] peu de lui. Je ne suis pas familier avec MVC, mais soit il y a un plus gros problème selon lequel l'objet de Session n'est pas en cours de création, ou vous êtes accédant au mauvais moment du cycle de vie, ou vous avez juste besoin d'un test pour vérifier si la Session != la valeur null.
La syntaxe utilisée par vous:
... est la bonne façon de vérifier pour un objet de Session dans ASP.NET. Je soupçonne que le problème, c'est parce que vous êtes à l'aide de ASP.NET MVC.
Peut-être certains de nos MVC experts peuvent nous éclairer sur la façon correcte de le faire dans ASP.NET MVC.
Edit: je vois que Marc Gravel a posté sa réponse alors que je suis en train de taper ceci. Qui devrait être illuminatory.
- Je le résoudre de cette manière:
Vous pouvez également utiliser: