Comment utiliser les sessions dans un ASP.NET MVC 4 application?
Je suis nouvelle ASP.NET MVC. J'ai utilisé PHP avant et il était facile de créer une session et sélectionnez les enregistrements utilisateur basée sur les variables de session.
J'ai cherché partout sur Internet pour une simple étape par étape tutoriel qui peut me montrer comment créer et utiliser les sessions dans mon C# ASP.NET MVC 4 application. Je veux créer une session avec l'utilisateur les variables que je peux y accéder de n'importe où dans mon contrôleurs et être en mesure d'utiliser les variables dans mes requêtes LINQ.
-Merci d'avance!
- double possible de Comment faire pour maintenir l'Utilisateur de la session avec ASP.NET MVC
- Cet article pourrait vous intéresser: brockallen.com/2012/04/07/think-twice-about-using-session-state
Vous devez vous connecter pour publier un commentaire.
Essayer
WebSecurity.CurrentUserId
afin de ne pas tirer à partir de la base de données plusieurs fois (je l'ai trouvé, il est très coûteux)?Account/LogOn
àHome/Index
,Session["FirstName"]
estnull
. Les développeurs doivent créer un contrôleur de parent (BaseController
) et de définir un champ protégé (internal protected HttpSessionStateBase SharedSession
) qui pourrait l'exposer au partagée variable de Session dans tous les sous-contrôleurs(ce qui suppose que tous vos app contrôleurs hériter de laBaseController
)En raison de la apatrides nature du web, les sessions sont également une manière extrêmement utile de la persistance des objets dans l'ensemble des demandes par serialising eux et de les stocker dans une session.
Un parfait cas d'utilisation de ce pourrait être si vous avez besoin d'accéder à une information régulière de l'ensemble de votre application, pour sauver supplémentaires appels de base de données sur chaque demande, ces données peuvent être stockées dans un objet et unserialised sur chaque demande, comme suit:
Notre réutilisables, serializable objet:
Cas d'utilisation:
Une fois que cet objet a été sérialisé, nous pouvons l'utiliser dans tous les contrôleurs sans avoir besoin de le créer ou de requête de la base de données pour les données contenues à l'intérieur de nouveau.
D'injecter votre objet de session à l'aide de l'Injection de Dépendance
Dans un monde idéal, vous serait ' programme pour une interface, pas de mise en œuvre " et d'injecter votre serializable objet de session dans votre contrôleur à l'aide de votre Inversion de Contrôle conteneur de choix, comme (cet exemple utilise StructureMap que c'est celui que je suis plus familier avec).
Vous devez vous inscrire dans votre
Global.asax.cs
fichier.Pour ceux qui ne sont pas familiers avec l'injection d'objets de session, vous pouvez trouver un plus en profondeur billet de blog sur le sujet ici.
Un mot d'avertissement:
Il est intéressant de noter que les sessions devraient être maintenus à un minimum, de grandes séances peuvent commencer à causer des problèmes de performance.
Il est également recommandé de ne pas stocker de données sensibles dans les (mots de passe, etc).
C'est la façon dont l'état de session fonctionne dans ASP.NET et ASP.NET MVC:
ASP.NET vue d'ensemble de l'État de Session
Fondamentalement, vous faites cela pour stocker une valeur dans l'objet Session:
Pour récupérer la valeur:
Account
àHome
, Session["Prenom"] est null. Les développeurs doivent créer unBaseController
et de définir un champ protégé (internal protected HttpSessionStateBase SharedSession
) qui pourrait l'exposer au partagéeSession
variable dans tous les sous-contrôleurs(ce qui suppose que tous vos app contrôleurs hériter de laBaseController
)Vous pouvez stocker tout type de données dans une session à l'aide de:
Cette variable a une durée de 20 minutes environ.
U peut stocker une valeur dans la session comme
Session["Prenom"] = FirstNameTextBox.Texte;
mais je vais vous suggérer u pour prendre en tant que champ statique dans le modèle d'attribuer de la valeur à elle et u peut accéder à la valeur du champ n'importe où dans l'application. U n'a pas besoin de session. la session doit être évitée.
sur le contrôleur de l'Employé.FullName = "ABC";
Maintenant u peut accéder à ce Nom complet de n'importe où dans l'application.