从 .net4.8 升级后 .net6 中的会话

Posted

技术标签:

【中文标题】从 .net4.8 升级后 .net6 中的会话【英文标题】:Sessions in .net6 after upgrading from .net4.8 【发布时间】:2022-01-11 14:17:19 【问题描述】:

我刚刚将我的 .net 4.8 MVC Web 应用程序升级到了 .net6。 我使用 Sessions 来存储对象。 例如用户类:

public class User

    [Key]
    public string UserID  get; set; 
    public string TenantId  get; set; 
    public string FirstName  get; set; 
    public string LastName  get; set; 
    public string MobilePhone  get; set; 
    public bool IsEnabled  get; set; 
    public virtual ICollection<Department> Departments  get; set; 


这是我设置会话的方式:

Session[Consts.CURRENTUSER] = userFromDb;

我就是这样使用它的:

User _currentUser = Session[Consts.CURRENTUSER] as User;

现在,升级后无法编译。我收到以下错误:

错误 CS0103 当前上下文中不存在名称“会话”

如果我使用以下HttpContext.Session[Consts.CURRENTUSER] as User 它仍然不允许上述使用。

将了解如何在 .net 核心中使用上述场景的示例。

【问题讨论】:

什么“不起作用”?它是否无法编译,是否抛出异常,_currentUser null,究竟会发生什么?另外,您是否在启动时启用了会话? 你是对的——我的意思是不编译。我没有在启动时启用会话。 嗯...你到底想在哪里编写第三个代码块?你能提供一个minimal reproducible example吗? 作为@CamiloTerevinto 回答的补充,您需要遵循检查文档:在使用会话之前,您需要添加 IDistributedMemoryCache 请检查 Microsoft 的文档:docs.microsoft.com/fr-fr/aspnet/core/fundamentals/… 【参考方案1】:

阅读Microsoft docs后,我关注this guide from step 4允许使用Sessions。 然后,为了在 .net core 中使用复杂对象,我关注了this link,它提供了一个扩展方法,实现了在会话中使用复杂对象。

【讨论】:

以上是关于从 .net4.8 升级后 .net6 中的会话的主要内容,如果未能解决你的问题,请参考以下文章

2022 wasm blazor.webassembly.js 未找到 .net5 到 .net6 升级

我从 .Net5 升级到 .Net6,现在我的令牌存储在双引号中,我无法验证从我的 blazor 服务器应用程序对 API 的调用

Asp.NetCore3.1开源项目升级为.Net6.0

Asp.NetCore3.1开源项目升级为.Net6.0

iNeuOS工业互联网操作系统,顺利从NetCore3.1升级到Net6的过程汇报,发布3.7版本...

升级到 .NET 6 后 IIS 子应用程序未处理请求 - 返回 307