如何使用 C# 在 ASP.NET Core 3.1 MVC 中使用会话变量
Posted
技术标签:
【中文标题】如何使用 C# 在 ASP.NET Core 3.1 MVC 中使用会话变量【英文标题】:How to use session variables in ASP.NET Core 3.1 MVC using C# 【发布时间】:2021-09-26 05:01:19 【问题描述】:我在处理会话对象时遇到了问题。设置和进入同一个控制器可以正常工作,我的麻烦是使用保存在另一个控制器中的会话中的信息,它对我不起作用,每次我得到一个空值。我曾经编写 php 代码,我只需要启动会话并获取值。不知道如何在 ASP.NET Core 3.1 MVC 中做到这一点。
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();
【问题讨论】:
【参考方案1】:对于 ASP.NET Core,您需要确保在 Startup-Class 中添加了所有需要的配置。我怀疑你缺少内存缓存。
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;
);
【讨论】:
【参考方案2】:在我看来,您的 HttpContext.Session.SetInt32("userid", userid);
看起来不对。我认为你应该这样设置
HttpContext.Session.SetInt32("userid", usuario.id_)
因为除了您正在设置的那个之外,我没有看到另一个“用户 ID”。我可能是错的。你的sql.addUser(usuario);
也可能需要sql.SaveChanges();
我也可能错了。 :) 希望我能帮上忙 :)
【讨论】:
以上是关于如何使用 C# 在 ASP.NET Core 3.1 MVC 中使用会话变量的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ASP.NET Core 同时制作 Razor Page 和 C# 代码框架?
如何在 C# 页面 ASP.NET Core MVC 上使用 SignInManager 和 Usermanager
如何在 Asp.NET Core WEB API 中使用 .Net (C#) 在 Payload 中创建具有自定义 JSON 声明的 JWT 令牌
Asp.net Core-在使用 javascript 或 C# 上传之前选择和验证 excel 文件?