将HttpContext.Session的ASP.NET Core 2.2应用程序部署到IIS会话后无法正常工作

时间:2019-02-07 17:05:46

标签: iis asp.net-core

使用IIS部署我的ASP.NET Core 2.2应用程序后,使用HttpContext.Session编码的会话不起作用。如果设置了会话变量,则请求结束后,变量将被删除;如果在其他请求之后尝试访问它,则变量的值为null。如果我在Visual Studio中运行该应用程序,则一切正常。

2 个答案:

答案 0 :(得分:1)

除非您不希望所有cookie均征得其同意,否则请勿这样做。要允许会话,您应该仅在Cookie.IsEssential = true中添加选项AddSession。这会将会话cookie标记为必不可少。

services.AddSession(options => {
    options.IdleTimeout = TimeSpan.FromMinutes(15);
    options.Cookie.HttpOnly = true;
    options.Cookie.IsEssential = true;
});

阅读此内容以获取更多信息:https://andrewlock.net/session-state-gdpr-and-non-essential-cookies/

答案 1 :(得分:0)

问题是,IIS认为会话cookie不是必需的,并且我启用了一个选项,要求用户许可才能使用非本质cookie。因为我只使用基本Cookie,所以我在Startup.cs中将options.CheckConsentNeeded = context => true;更改为options.CheckConsentNeeded = context => false;