Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Asp.Net Core não salva sessão

Estou criando um projeto Asp.Net Core 2.1 e preciso armazenar uma variável de sessão.

Quando o valor é atribuído a ela e busca dentro da mesma função ele é retornado corretamente, mas quando é vou busca-lá em outra função não retorna nenhum valor

Startup.cs


        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            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.AddDistributedMemoryCache();
            services.AddSession();

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();

        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env,
                                     IServiceProvider serviceProvider)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();

            app.UseSession();

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

função para inserir valor ao criar a tela

        public IActionResult teste()
        {
            var codigo = contextAccessor.HttpContext.Session.GetInt32("codigoControle");

            if (codigo == null)
            {
                contextAccessor.HttpContext.Session.SetInt32("codigoControle", 1);
            }

            return View();
        }

Função que será submetida e variável codigoControle não captura valor


        [HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult SangriaSuprimento(SangriaSuprimento sangriaSuprimento)
        {
            var codigocontrole = contextAccessor.HttpContext.Session.GetInt32("codigoControle");

            return RedirectToAction("Index");
        }
2 respostas
solução!

Encontrei a responta nesse tópico https://stackoverflow.com/questions/49317304/asp-net-core-2-1-session

correnção no ConfigureServices

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            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;
            });

            services.AddDistributedMemoryCache();
            services.AddSession();

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();

        }

Oi André tudo bem?

Que bom que encontrou a resposta rapidamente!!! Nem deu tempo de a gente tentar responder! Eu costumo brincar que uma das habilidades de um programador é procurar a resposta dos problemas na internet.

O Google é meu melhor amigo no trabalho rsrsrs.

Bons estudos!!!