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