session - ASP.NET Core - 会话未保存
问题描述
我试图在 ASP.NET Core 中保存我的会话,但它没有得到保存。
我查看了其他答案,建议更改 CookiePolicyOptions 并且到目前为止没有任何效果。我有另一个代码完全相同的项目(大概),它在那里工作,但在这个项目中没有。
在我的控制器中,我有:
[HttpPost]
public IActionResult AddToPlan(int mealId)
{
PlanCart planCart = GetPlanCart();
planCart.AddItem(mealId);
SavePlanCart(planCart);
// ALWAYS 1
var y = planCart.returnList();
foreach (var x in y)
{
var z = x; // For debug purposes
}
return RedirectToAction("Index");
}
private PlanCart GetPlanCart()
{
PlanCart planCart = HttpContext.Session.GetJson<PlanCart>("PlanCart") ?? new PlanCart();
return planCart;
}
private void SavePlanCart(PlanCart planCart)
{
HttpContext.Session.SetJson("PlanCart", planCart);
}
我有一个带有扩展方法的类:
public static class SessionsExtensions
{
public static void SetJson(this ISession session, string key, object value)
{
session.SetString(key, JsonConvert.SerializeObject(value));
}
public static T GetJson<T>(this ISession session, string key)
{
var sessionData = session.GetString(key);
return sessionData == null
? default(T) : JsonConvert.DeserializeObject<T>(sessionData);
}
}
启动类:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseAuthentication();
app.UseSession();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
app.UseCookiePolicy();
}
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddSession();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddMemoryCache();
我检查了我的会话。会话确实存在,但每次 PlanCartList 的计数为 1 并且以前的项目都丢失了。
如果有人可以帮助我,将不胜感激,因为我在这里失去了理智!
解决方案
推荐阅读
- angular - 如何在变量中应用'"'?
- python - 训练facenet时出现ValueError
- bazel - 如何使 sh_test 依赖于构建 docker 镜像?
- python - 如何计算累积平均收入?Python
- angular - 如何在 Angular 9/TypeScript 中添加垂直滚动条
- firebase - firebase 多区域的优势
- python - 保存的模型无法加载包含自定义方法的层
- javascript - .getValues 无法读取自定义函数
- logstash - ElasticStack 中的架构 logstash 配置文件
- excel - VBA 数字格式货币 2dp