asp.net-core - 向 ASP.NET Core 3.0 添加会话存储
问题描述
我们目前正在将现有的ASP.NET Core 2.2 Web 应用程序迁移到 3.0 到目前为止,我们已经完成了大部分工作,除了会话存储。
我们在 v2.2 中完全可以使用它,因为我们用它来保存当前登录用户的详细信息。现在我们已经升级到 v3.0,它不再工作了。
这是中间件代码。
public void ConfigureServices(IServiceCollection services)
{
// configure Razor pages, MVC, authentication here
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
//prevent session storage from being accessed from client script
//i.e. only server side code (added security)
options.Cookie.HttpOnly = true;
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseSession();
}
注意,为了清楚起见,我删除了其余的中间件代码。
我尝试将app.SetSession()行移动到方法的顶部,以防执行顺序出现问题,但这没有任何区别。
当我将鼠标悬停在调试器中的HttpContent.Session属性上时,我收到以下错误:
HttpContext.Session threw an exception of type System.InvalidOperationException
如何在ASP.NET Core 3.0 中启用会话存储?
解决方案
我刚刚尝试将app.UseSession()添加到方法的顶部,它现在正在工作。它以前肯定不起作用,但现在起作用了,这是最重要的。
推荐阅读
- java - 如何使用改造通过 oAuth 1.0 发送发布请求?
- docker - 通过 Nginx 到同一服务器上不同容器的基于路径的路由
- javascript - simple-marquee js 库的 Firefox 布局问题
- firebase - Firestore 安全规则匹配数组
- python - 计算 X 个条目后行的平均值
- python - 我需要编写一个函数来打印给定月份的一周,并带有参数周数、开始日和月份中的天数(Python)
- java - 可以从 Eclipse 运行 Spring Boot 应用程序,但不能从终端运行
- angular - 仅在生产中出现 Angular StaticInjector 错误
- azure - 在逻辑应用程序中将消息发送到服务总线主题时,有什么方法可以分块消息?
- cypress - 如果 else 在 cypress 中不起作用,它只会进入 if 条件