我正在尝试将用户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。 (请参阅附带的快照)
我正在使用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);
});
您是否在`ConfigureServices中添加了IDistributedCache
的实现?
请参见此doc以获取示例实现:
要启用会话中间件,启动必须包含:
任何IDistributedCache内存缓存。 IDistributedCache实现用作会话的后备存储。欲了解更多有关信息,请参阅ASP.NET Core中的分布式缓存。致电ConfigureServices中的AddSession。在Configure中调用UseSession。
注意,他们正在使用基于内存的IDistributedCache
版本,它是not actually分布式缓存,但是是本地缓存。