首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过C#在ASP.NET Core3.1MVC中使用会话变量

问如何通过C#在ASP.NET Core3.1MVC中使用会话变量
EN

Stack Overflow用户
提问于 2021-09-26 05:01:19
回答 1查看 2.7K关注 0票数 0

我在使用会话对象时遇到了问题。设置和进入同一个控制器会很好,我的麻烦是在另一个控制器中使用保存在会话中的信息,这对我不起作用,每次我得到一个空值。我曾经编写过PHP代码,我只需要启动会话并获取值。不知道如何在ASP.NET Core3.1MVC中做到这一点。

代码语言:javascript
复制
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();
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2021-09-26 06:37:18

对于ASP.NET核心,您需要确保在启动类中添加了所有需要的配置。我怀疑你错过了内存缓存。

代码语言:javascript
复制
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;
        });
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69332013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档