none
asp.net core DistributedMemoryCache не работает RRS feed

  • Вопрос

  • Всем привет

    Хочу попробовать работу с сессиями. Вроде сделал все правильно, а значения которые записываются в сессию не сохраняются ((

    вот код

    public void mysession(SessionOptions so)
    {
      so.Cookie.HttpOnly = true;
      so.Cookie.Name = ".My.Secc";
      so.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
      so.IdleTimeout = TimeSpan.FromMinutes(10);
    }
    
    ConfigureServices(...)
    {
      services.AddDistributedMemoryCache();
      services.AddSession(new Action<SessionOptions>(mysession));
    }
    
    Configure()
    {
      app.UseSession();
    }


     В контроллере

    [Authorize]
    public IActionResult Callf1()
    {
      string a = "";
      if(HttpContext.Session.Keys.Contains<string>("my")==false) 
      HttpContext.Session.SetString("my", "");
      a = HttpContext.Session.GetString("my");
      a = a + "1";
      //
      HttpContext.Session.SetString("my", a);
      ViewBag.my = a;
     return View("Callf");
    }
    [Authorize]
    public IActionResult Callf2()
    {
      string a = "";
      a = HttpContext.Session.GetString("my");
      ViewBag.my = a;
     return View("Callf");
    }

    Если в начале вызвать действие Callf1 то в сессию в строку должно установиться 1

    А после последующего вызова Callf2 происходит чтение из сессии и результат пустая строка

    Я предполагал получить ранее сохраненный ключ

    В чем ошибка?


    • Изменено jin15 19 декабря 2018 г. 14:12
    19 декабря 2018 г. 12:38

Ответы

  • Разобрался

    надо поменять тут true на false

    services.Configure<CookiePolicyOptions>(options =>
    {
      options.CheckConsentNeeded = context => false;
      options.MinimumSameSitePolicy = SameSiteMode.None;
    });
    • Помечено в качестве ответа jin15 20 декабря 2018 г. 20:39
    20 декабря 2018 г. 20:38

Все ответы

  • Работает только в debug режиме

    19 декабря 2018 г. 13:18
  • Пожалуйста отформатируйте код используя функцию "Вставить блок кода", а то читать очень трудно.

    Сделаем содержимое сообщества лучше, вместе!

    19 декабря 2018 г. 13:19
    Модератор
  • Код приведённый выше должен работать, не вижу ошибок. Проверьте наличие куки в браузере между вызовами.

    Сделаем содержимое сообщества лучше, вместе!

    20 декабря 2018 г. 8:28
    Модератор
  • Да 

    что то не так с cookie

    Просмотрел на дебагере и cookie  .My.Secc присутствуют

    а не на дебагере таких Cookie нет

    Странно

    В чем может быть косяк?

    20 декабря 2018 г. 10:30
  • Разобрался

    надо поменять тут true на false

    services.Configure<CookiePolicyOptions>(options =>
    {
      options.CheckConsentNeeded = context => false;
      options.MinimumSameSitePolicy = SameSiteMode.None;
    });
    • Помечено в качестве ответа jin15 20 декабря 2018 г. 20:39
    20 декабря 2018 г. 20:38