首页 > 解决方案 > 向 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 中启用会话存储?

标签: asp.net-coreasp.net-core-3.0

解决方案


我刚刚尝试将app.UseSession()添加到方法的顶部,它现在正在工作。它以前肯定不起作用,但现在起作用了,这是最重要的。


推荐阅读