Je suis en train de définir une variable de session dans une méthode et d'essayer d'obtenir la valeur de la variable de session d'une autre méthode dans un contrôleur, mais sa valeur devient toujours nulle:
Voici mon code:
public class HomeController : Controller
{
public IActionResult Index()
{
HttpContext.Session.SetString("Test", "Hello!");
var message = HttpContext.Session.GetString("Test");// Here value is getting correctly
return View();
}
public IActionResult About()
{
var message = HttpContext.Session.GetString("Test"); // This value is always getting null here
return View();
}
}
Voici ma configuration de session dans Startup
class:
Dans la méthode ConfigureServices()
:
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddDistributedMemoryCache();
services.AddMvc().AddSessionStateTempDataProvider();
services.AddSession(options =>
{
options.Cookie.Name = "TanvirArjel.Session";
options.IdleTimeout = TimeSpan.FromDays(1);
});
Dans la méthode Configure()
:
app.UseSession();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Problème très étrange et particulier! Toute aide sera très appréciée!
Dans la méthode ConfigureServices
de la classe de démarrage, Set options.CheckConsentNeeded = context => false;
comme suit:
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
Problème résolu!
Vous pouvez également simplement définir Cookie.IsEssential = true
Comme expliqué ici: https://andrewlock.net/session-state-gdpr-and-non-essential-cookies/
Il y a une surcharge de services.AddSession()
qui vous permet de configurer SessionOptions
dans votre fichier Startup
. Vous pouvez modifier divers paramètres tels que le délai d'expiration de la session. Vous pouvez également personnaliser le cookie de la session. Pour marquer le cookie comme essentiel, définissez IsEssential
sur true:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true; // consent required
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddSession(opts =>
{
opts.Cookie.IsEssential = true; // make the session cookie Essential
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}