ASP.NET Core - сессия не сохраняется - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь сохранить сеанс в ASP.NET Core, но он не сохраняется.

Я посмотрел другие ответы, предлагая изменить CookiePolicyOptions, и пока ничего не получалось. У меня есть другой проект с точно таким же кодом (предположительно), и он работает там, но не в этом проекте.

В моем контроллере у меня есть:

    [HttpPost]
    public IActionResult AddToPlan(int mealId)
    {
        PlanCart planCart = GetPlanCart();

        planCart.AddItem(mealId);
        SavePlanCart(planCart);

        // ALWAYS 1
        var y = planCart.returnList();

        foreach (var x in y)
        {
            var z = x; // For debug purposes
        }

        return RedirectToAction("Index");
    }

    private PlanCart GetPlanCart()
    {
        PlanCart planCart = HttpContext.Session.GetJson<PlanCart>("PlanCart") ?? new PlanCart();
        return planCart;
    }
    private void SavePlanCart(PlanCart planCart)
    {
        HttpContext.Session.SetJson("PlanCart", planCart);
    }

У меня есть класс с расширениемметоды:

public static class SessionsExtensions
{
    public static void SetJson(this ISession session, string key, object value)
    {
        session.SetString(key, JsonConvert.SerializeObject(value));
    }
    public static T GetJson<T>(this ISession session, string key)
    {
        var sessionData = session.GetString(key);
        return sessionData == null
       ? default(T) : JsonConvert.DeserializeObject<T>(sessionData);
    }
}

Класс запуска:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseAuthentication();
        app.UseSession();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

        app.UseCookiePolicy();

    }

        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.AddSession();
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        services.AddMemoryCache();

Я проверил свою сессию. Сессия существует, но каждый раз, когда счет PlanCartList равен 1, а предыдущие элементы теряются.

Если кто-нибудь может мне помочь, это будет очень цениться, потому что я схожу с ума здесь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...