从 .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 的调用