.net core 中 session 用法
时间: 2024-12-17 11:16:43 浏览: 14
在.NET Core中,Session主要用于在客户端和服务器之间存储会话数据,通常用于跟踪用户的登录状态、购物车信息等需要跨请求保持的数据。它并不直接存在于`.NET Core`框架中,而是通过ASP.NET Core SignalR或者其他的会话管理中间件如Microsoft.AspNetCore.Session来实现。
以下是基本的Session用法:
1. **启用Session**:
在Startup.cs的ConfigureServices方法中添加对Microsoft.Extensions.Options的依赖,并配置SignalR服务:
```csharp
services.AddOptions<SessionOptions>();
services.Configure<SessionOptions>(options =>
options.IdleTimeout = TimeSpan.FromMinutes(20)); // 设置超时时间
services.AddSignalR();
```
2. **启用中间件**:
```csharp
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<YourHub>("/your_hub");
endpoints.MapSession();
});
```
3. **访问Session**:
在Controller或Hub类中,可以注入IHttpContextAccessor来访问Session:
```csharp
public class YourController : ControllerBase
{
private readonly IHubContext<YourHub> _hubContext;
private readonly IHttpContextAccessor _httpContextAccessor;
public YourController(IHubContext<YourHub> hubContext, IHttpContextAccessor httpContextAccessor)
{
_hubContext = hubContext;
_httpContextAccessor = httpContextAccessor;
}
[HttpGet]
public IActionResult GetSessionData()
{
string sessionId = _httpContextAccessor.HttpContext.Session.Id;
object data = _httpContextAccessor.HttpContext.Session.GetString("key"); // 获取值
return Ok(data);
}
}
```
4. **设置和更新Session**:
可以使用`Session.SetString`、`Session.GetInt32`等方法设置值,也可以在前端通过JavaScript的`sessionStorage`来操作。
阅读全文