Как получить сессию в asp .net core 2.1, когда у меня есть файл cookie .AspNetCore.Session? - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь получить сессию с помощью .AspNetCore.Session в проекте .net core 2.1, есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Нет способа создать сеанс с использованием идентификатора.На самом деле ответственность за создание сеанса и управление им лежит на серверах.Идентификатор сеанса - это просто уникальный идентификатор, который сервер передает браузеру, чтобы однозначно идентифицировать сеанс HttpSession и поддерживать диалоговое состояние.Почему на самом деле вам нужно сделать это.Если вы думаете правильно, вам не нужно будет создавать сессию, используя идентификатор.Должно быть другое решение для вашего запроса.Поделитесь своими точными требованиями, чтобы мы могли вам помочь.

0 голосов
/ 30 декабря 2018

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>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...