如何修复InvalidOperationException:尚未为此应用程序或请求配置会话

问题描述 投票:0回答:1

我正在尝试将用户ID这样存储在会话状态中。

var userInfo = HttpContext.Session.GetString("UserId");

我在上一行遇到了例外。我已经看到了类似问题的解决方法,并且大多数人说我需要在已经存在的app.UseMvc()之前调用app.UseSession()。我不知道如何解决这个问题。我试图重新排列Startup.cs中的代码,但无法解决此问题。请协助。

InvalidOperationException:尚未为此配置会话申请或请求

我这样存储用户ID:

HttpContext.Session.Set("UserId", Encoding.ASCII.GetBytes(user.UserId));

另外,当前属性始终为null,所以我不确定它是否正确存储了UserID。 (请参阅附带的快照)

enter image description here

我正在使用ASPNET Core 2.2。“启动配置”方法中的代码如下所示

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.UseSession();
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseStaticFiles();

            app.UseMvc();           

        }

在ConfigureServies方法中,我已经添加了此

   services.AddSession(options => {
                options.IdleTimeout = TimeSpan.FromMinutes(30);

            });
c# asp.net-core azure-service-fabric usersession
1个回答
0
投票

您是否在`ConfigureServices中添加了IDistributedCache的实现?

请参见此doc以获取示例实现:

要启用会话中间件,启动必须包含:

任何IDistributedCache内存缓存。 IDistributedCache实现用作会话的后备存储。欲了解更多有关信息,请参阅ASP.NET Core中的分布式缓存。致电ConfigureServices中的AddSession。在Configure中调用UseSession。

注意,他们正在使用基于内存的IDistributedCache版本,它是not actually分布式缓存,但是是本地缓存。

© www.soinside.com 2019 - 2024. All rights reserved.