netcore中的Session以及HttpContext对象使用小结

本文总结了在ASP.NET Core中如何管理和使用Session,包括通过NuGet添加Session库,Startup.cs中的配置,以及在Controller和非Controller场景下如何访问 HttpContext.Session。此外,还提到了基于IHttpContextAccessor进行注入的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

l,以往我们引用DLL都是直接引用,在Core里这样是不行的,必须基于NuGet添加,或者基于project.json添加,然后保存VS会启动还原类库。

第二就是使用Session的问题,Core里使用Session需要添加Session类库。

添加Session

在你的项目上基于NuGet添加:Microsoft.AspNetCore.Session

修改startup.cs

在startup.cs找到方法ConfigureServices(IServiceCollection services) 注入Session(这个地方是Asp.net Core pipeline):services.AddSession();

接下来我们要告诉Asp.net Core使用内存存储Session数据,在Configure(IApplicationBuilder app,...)中添加代码:app.UserSession(); 

Session

1、在MVC Controller里使用HttpContext.Session

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using Microsoft.AspNetCore.Http;
 
public class HomeController:Controller
{
    public IActionResult Index()
    {
        HttpContext.Session.SetString( "code" , "123456" );
        return View();
     }
 
     public IActionResult About()
     {
        ViewBag.Code=HttpContext.Session.GetString( "code" );
        return View();
     }
}

2、如果不是在Controller里,你可以注入IHttpContextAccessor,有两种方式,一种是在类的构造函数里面注入,如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class SomeOtherClass
{
    private readonly IHttpContextAccessor _httpContextAccessor;
    private ISession _session=> _httpContextAccessor.HttpContext.Session;
 
    public SomeOtherClass(IHttpContextAccessor httpContextAccessor)
    {
       _httpContextAccessor=httpContextAccessor;      
    }
 
    public void Set()
    {
      _session.SetString( "code" , "123456" );
    }
   
    public void Get()
   {
      string code = _session.GetString( "code" );
    }
}
另外一种是通过IServiceProvider,这时需要在startup中Configure中得到这个对象,然后通过
得到Microsoft.AspNetCore.Http.HttpContext对象,这时就可以和使用 HttpContext了,里面有Session,Request,Response对象的使用,在使用Request对象时,这样获取HttpContext.Request.Query[""]请求参数,获取cookie通过HttpContext.Request.Cookies[""],这里有一点需要注意netcore中的cookie添加的是通过HttpContext.Response.Cookies.Append方法添加的,和asp.net 不同的是添加的键值对的值是自动UrlEncode的,所以获取cookie的时候是UrlDecode的,这个需要注意。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值