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");
}