In Configure Services
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
// Set a short timeout for easy testing.
options.IdleTimeout = TimeSpan.FromSeconds(10);
options.Cookie.HttpOnly = true;
});
In Configure before UseMvc ()
app.UseSession();
Тогда в контроллере,
HttpContext.Session.SetString(SessionKeyName, "The Doctor");
HttpContext.Session.SetInt32(SessionKeyAge, 773);
var name = HttpContext.Session.GetString(SessionKeyName);
var age = HttpContext.Session.GetInt32(SessionKeyAge);
Ссылка
Редактировать: OP спрашивает, как я могу получить идентификатор сеанса?
Внутри контроллера вы можете использовать
HttpContext.Session.Id
Из контроллера вынеобходимо использовать IHttpContextAccessor
public class MyClass
{
private readonly HttpContext context;
public RequestInformation(IHttpContextAccessor contextAccessor)
{
this.context = contextAccessor.HttpContext;
}
public string GetSettionId()
{
return HttpContext.Session.Id;
}
}
PS: не забудьте добавить регистрацию IHttpContextAccessor
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();