Variables d'État de Session ne fonctionne pas
Je suis en train d'écrire un ASP.NET C# site web qui a besoin d'accéder à des données à partir d'une base de données et l'afficher à l'utilisateur pour la visualisation et l'édition. Les données spécifiques, il accède est basée sur l'utilisateur qui se connecte, et j'ai besoin pour plusieurs utilisateurs d'être en mesure d'utiliser le site simultanément, la visualisation et l'édition de données différentes, comme ils le font. Je suis tombé sur le concept d'États de la Session, et après beaucoup de lecture et non pas comme beaucoup de compréhension. J'ai rencontré un problème.
Dans ma page par défaut, je fais cela pour créer une variable de Session:
Session.Add("UserData",userdata);
J'ai aussi essayé ceci:
Session["UserData"] = userdata;
Puis dans une page ultérieure, je fais ça pour essayer de l'appeler:
object myobject = Session["UserData"];
Cela me donne une erreur, en disant que Session["UserData"]
n'est pas définie à une instance d'un objet. C'est la méthode que tout le monde semble être à l'aide, est-il quelque chose que je suis absent?
Mon site est configuré sur IIS pour avoir l'État de Session en Mode "En cours", mais la plupart des gens semblent régler manuellement à l'aide de leur site web.fichier de configuration. Cependant, lorsque j'essaie de le faire dans mon web.fichier de config je suis toujours accueilli avec un "non reconnu section de configuration". Mon compilateur ne sait pas ce que c'est:
<sessionstate mode="inproc"/>
MODIFIER, plus détaillé code:
MyClass userdata = new MyClass();
userdata.name = "myname";
userdata.number = 5;
Session["UserData"] = userdata;
plus tard...
MyClass mydata = (MyClass)(Session["UserData"]);
Cela renvoie l'erreur de Session["UserData"] est null.
où vous avez la Session["UserData"] = userdata; , où en êtes-vous affectation userdata et vous pouvez coller le code de sorte que nous pouvons voir. Session["UserData"] doit travailler ou devrais-je dire avoir une valeur si vous avez assigné correctement..
"userdata" est pseudo-code ici, je suis sûr à 100% que cette variable contient des données avant que j'appelle tout de ce code.
c'est une classe personnalisée, cependant, sont des variables de session restreinte aux seules classes de base?
Vous n'avez pas désactivé les cookies pensez-vous?
OriginalL'auteur Andrew | 2011-12-21
Vous devez vous connecter pour publier un commentaire.
Le fait que vous ne pouvez pas définir le mode de session dans le site web.la config est un drapeau rouge pour moi de quelque chose de bizarre et d'une odeur passe. Alors ...
Vérifiez que le mode de session est en vertu de ce système.web élément du web.config sinon il ne sera pas valide.
Vérifier que enableSessionState n'a pas été définie sur false dans le web.la configuration ou la directive de page
Essayer d'écarter IIS. Si cela est possible de convertir votre site web à une application web et d'exécuter par le biais de visual studio donc ça commence avec son propre serveur web intégré. Ce qui arrive ensuite? Est l'état de la Session de retour?
Il devrait n pas de faire une différence, mais si vous ne faites pas le test dans le Page_Load puis juste essayer là - juste au cas où vous faites ces tests quelque part inhabituel.
Quelle que soit la réponse est à cela quand on sait qu'il sera headachingly évident. Je suis geninuely hâte de découvrir ce que c'est. Bonne chance
OriginalL'auteur Crab Bucket
Les variables de Session sont bonnes pour gérer plusieurs utilisateurs sur votre site web, mais pour les initialiser, vous devez utiliser le Mondial.asax de fichier dans votre application web. Ce fichier a deux méthodes spécifiquement pour les variables de Session, Session_Start et Session_End. Pour initialiser ta variable de Session vous utilisez le code aimé le suivant Mondiale.asax:
Aussi, vous pouvez avoir à jeter la valeur de votre variable de session si vous faites des opérations sur elle comme +, par exemple, si vous avez une session de variable contenant une valeur de type entier, vous pouvez faire comme suit:
Aussi, si vous essayez d'utiliser votre variable de session à l'extérieur de la méthode Page_Load ou une autre méthode, comme d'essayer de l'utiliser comme une propriété du Système.Web.L'INTERFACE utilisateur.Classe Page dans votre code C# de fichier, qui peut ne pas fonctionner, vous pouvez seulement utiliser vos variables de session dans une méthode.
OriginalL'auteur Michael G. Workman
OriginalL'auteur Travis J
Je recherche pour tous les appels à
Session.Clear
ouSession.Abandon
pour voir si votre session est en cours de purge entre ces deux actions.Vous pouvez également raccorder à l'
Session_End
événement et de voir si cela se fait frapper dans le courant entre les deux appels.OriginalL'auteur Jacob G
Où vous avez
Session.Add("UserData",userdata);
vous voulez vérifier la valeur que vous avez besoin de jeter l'objet (chaîne de caractères) à l'instar de ce
vous pouvez ensuite exécuter une vérification pour voir
if(string.IsNullOrEmpty(userdata))
mais vous ne savez pas comment vous sont en cours d'initialisation et affectation d'une valeur à un userdata
OriginalL'auteur MethodMan
T-il se plaindre de la votre
myobject
est nul ou queSession
est nulle? Lorsque vous essayez de récupérer la valeur que vous faites cela à partir de la méthode de quelle classe?Encore une autre question - ce que par hasard vous tentez d'y accéder en parallèle fil?
OriginalL'auteur mfeingold