原因可能是由于Session中的值没有序列化,导致在不同请求之间无法正确地保留值。要解决这个问题,可以使用Json序列化器将Session中的值序列化为字符串。
以下是示例代码:
在Startup.cs文件中,将Session服务配置为使用Json序列化器:
services.AddDistributedMemoryCache();
services.AddSession(options => { options.IdleTimeout = TimeSpan.FromMinutes(30); options.Cookie.HttpOnly = true; options.Cookie.IsEssential = true; options.Cookie.SameSite = SameSiteMode.Strict;
options.SerializerOptions = new JsonSerializerOptions
{
ReferenceHandler = ReferenceHandler.Preserve,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};
});
然后,在处理程序中,将Session中的值序列化和反序列化:
//设置Session中的值 HttpContext.Session.SetString("mykey", JsonSerializer.Serialize(myvalue));
//检索Session值
var strValue = HttpContext.Session.GetString("mykey");
var myvalue = JsonSerializer.Deserialize
这样,就可以保证Session中的值在不同请求之间正确地保留和传递。
上一篇:ASP.NETCoreHttpClient请求返回200,但WebAPI返回了406错误
下一篇:ASP.NETCoreHTTPLoggerMiddleware导致“在此上下文实例上以前的操作完成之前启动了第二个操作”。