我在使用会话对象时遇到了问题。设置和进入同一个控制器会很好,我的麻烦是在另一个控制器中使用保存在会话中的信息,这对我不起作用,每次我得到一个空值。我曾经编写过PHP代码,我只需要启动会话并获取值。不知道如何在ASP.NET Core3.1MVC中做到这一点。
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using partner2.Data;
using partner2.Helpers;
using partner2.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace partner2.Controllers
{
public class UsuarioController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult Create()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]//antiataque
public IActionResult Create(Usuario usuario)
{
Sql sql = new Sql();
usuario.id_ativo = true;
usuario.senha = GenerateMD5.CreateMD5(usuario.senha);
sql.addUser(usuario);
int userid = sql.getIdByCpf(usuario.cpf);
HttpContext.Session.SetInt32("userid", userid);
if (!sql.enderecoExists(usuario.cpf))
{
return View("CreateAdress");
}
return View();
}
public IActionResult CreateAdress(Endereco endereco)
{
Sql sql = new Sql();
int? id = HttpContext.Session.GetInt32("userid");
sql.addEndereco(endereco);
return View();
}
}
}发布于 2021-09-26 06:37:18
对于ASP.NET核心,您需要确保在启动类中添加了所有需要的配置。我怀疑你错过了内存缓存。
public void ConfigureServices(IServiceCollection services)
{
....
....
services.AddDistributedMemoryCache(); // <- This service
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromSeconds(10);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});
}https://stackoverflow.com/questions/69332013
复制相似问题