ASP.NET MVC - Session est null
J'ai un MVC3 application .net4 que de sa session de travail dans l'Environnement de dev, mais pas dans la production.
Dans la production, je me suis connecté le sessionID et la c'est la même chose dans le moment où j'ai Mis et Obtenir à partir de la session.
Lorsque j'essaie d'obtenir de la session, je suis Null Exception
.
C'est de cette façon-je accéder à la session:
public static class HandlersHttpStorage
{
public static string TestSession
{
get
{
return HttpContext.Current.Session["time"];//This is null
}
set
{
HttpContext.Current.Session.Add("time", value);//DateTime.Now.ToString()
}
}
}
De quoi m'inquiète c'est que le comportement de la production est différent de celui du développement, même si le web.la config est la même.
Utiliser fiddler et de regarder votre Id de session. Est le navigateur le garder (est-il de l'envoyer vers le serveur sur demande suivante)? Est une nouvelle d'être envoyé au client à chaque fois? Êtes-vous à la spécification distincte de domaine du cookie à l'extérieur de défaut (ce qui pourrait expliquer le travail sur un environnement et pas un autre)
Pouvez-vous expliquer "séparer le domaine de cookie"? Merci
regardez dans votre site web.config avez-vous quelque chose comme <httpCookies domain="something.com">
Fini par trouver ma réponse à cette question ici: stackoverflow.com/a/1212451/578859
Pouvez-vous expliquer "séparer le domaine de cookie"? Merci
regardez dans votre site web.config avez-vous quelque chose comme <httpCookies domain="something.com">
Fini par trouver ma réponse à cette question ici: stackoverflow.com/a/1212451/578859
OriginalL'auteur Shazam | 2012-05-17
Vous devez vous connecter pour publier un commentaire.
Solution 1:
Lien: HttpContext.Actuel.La Session est null lors de l'acheminement des demandes
L'a obtenu. Tout à fait stupide, en fait. Il a travaillé, après je l'ai enlevé & ajout de la SessionStateModule comme suit:
Simplement en ajoutant qu'il ne fonctionne pas depuis la "Session" devraient déjà avoir été défini dans le
machine.config
.Maintenant, je me demande si c'est généralement la chose à faire. Il ne semble pas si depuis il semble donc brut...
Solution 2:
Lien: HttpContext.Actuel.Session null article
sessionKey peut-être en train de changer, vous aurez probablement besoin de faire:
Ou de la session peut être expirant, vérifier le délai d'attente:
http://msdn.microsoft.com/en-us/library/h6bb9cz9(SV.71).aspx
Ou vous pouvez définir la valeur de session à partir de quelque part d'autre, normalement j'ai le contrôle de l'accès à la Session/objet de Contexte à travers une propriété
OriginalL'auteur Nildarar
Une autre cause possible/solution, c'est que IE n'est pas d'enregistrer des cookies si le nom de domaine a un trait de soulignement (parce que, à strictement parler, les noms de domaine ne peuvent pas avoir des traits de soulignement, de sorte que vous aurez probablement seulement cette rencontre en développement), par exemple
http://my_dev_server/DoesntWork
. Chrome ou Firefox devrait fonctionner dans ce scénario, et si vous modifiez le nom de domaine que vous utilisez pour ne pas avoir un caractère de soulignement problème résolu.Ref:
OriginalL'auteur Rory
Pour moi, j'ai trouvé que
HttpContext.Current
était nul, j'ai donc créé:Et je l'ai adoptée que dans ma fonction qui était dans mon autre classe, comme ceci:
J'avais réellement voulu ma fonction à une véritable méthode d'extension hors de
Session
comme celui-ci, mais ce que j'ai trouvé étaitthis HttpSessionStateBase session
était nulle, elle donnera l'NullReferenceException
quand j'ai essayé d'ajouter quoi que ce soit àSession
de l'utiliser. Donc:Que Microsoft avait ici: https://code.msdn.microsoft.com/How-to-create-and-access-447ada98 est devenu plutôt ceci:
Et j'ai pu récupérer mes données comme ceci:
Et, bien sûr, depuis
HttpContext.Current
etSession
qui existe maintenant, j'ai été en mesure de même que, pour simplifier:Si cela avait été l'objet, vous pouvez mettre le type de l'objet à la place de
<string>
dans leSetDataToSession()
fonction:
Et à récupérer:
ou tout simplement:
OriginalL'auteur vapcguy