0

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

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

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

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

我像这样存储用户ID:

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

此外,当前属性始终为空,因此我不确定它是否正确存储了用户 ID。(见附件快照)

在此处输入图像描述

我正在使用 ASPNET Core 2.2。Startup Configure 方法中的代码如下所示

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);

            });
4

1 回答 1

0

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

有关示例实现,请参阅此文档:

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

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

请注意,他们使用的是基于内存的版本IDistributedCache,它实际上不是分布式缓存,而是本地缓存。

于 2019-11-19T07:29:49.177 回答