Première surprise, vous venez d’un projet mvc.net Framework, et vous souhaitez accéder à votre Session, depuis votre Controller : le propriété n’est plus là !
Voyons ensemble comment mettre en place et utiliser la Session côté asp.net core.
Configurer l’appel de la Session avec un middleware, dans le fichier Startup.cs
Ici, deux étapes vont nous permettre de configurer le middleware permettant l’utilisation de la Session.
1. Configuration
Dans la méthode Configure, ajouter app.UseSession(); comme middleware.
TRES IMPORTANT : mettez bien cet appel avant le UseMvc, pour respecter l’ordonnancement des middlewares.
2. Extension des Services
Du côté configuration des services, vous devez ajouter deux lignes pour préparer l’utilisation des Sessions :
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
options.Cookie.HttpOnly = true;
options.IdleTimeout = TimeSpan.FromSeconds(10);
});
Utilisation de la Session dans un Controller
Ici, encore, c’est déroutant (enfin presque) : nous n’avons plus notre this.Session dans l’action de notre Controller.
Or, (pour celles et ceux qui viennent de asp.net côté Framework), il existe une seconde façon d’appeler la Session : grâce au HttpContext.
Tip : ajouter le using de Microsoft.AspNetCore.Http; en haut du fichier de votre Controller, vous pourrez profiter des méthodes plus sympa pour renseigner une valeur dans la Session.
1. Affectation de valeurs
Pour attribuer une valeur, vous devez avoir une clef (qui sera unique dans le dictionnaire de la Session), puis appeler le SetString ou SetInt32
Ce qui donne par exemple :
this.HttpContext.Session.SetString(« Ticks », DateTime.Now.Ticks.ToString());
2. Lecture de valeurs
Pour lire une valeur, vous devez renseigner la clef souhaitée (qui doit être présente dans le dictionnaire de la Session) :
string maValeur = this.HttpContext.Session.GetString(« Ticks »);