.net core session使用有很多文章,这里不再赘述。
问题现象为大部分浏览器或者移动客户端(例如微信、支付宝、钉钉)等都可以正常使用。但部分支付宝用户及钉钉用户确无法使用。
写入后读取不到值。查阅了大量资料,都说配置
services.AddSession(options =>
{
options.Cookie.IsEssential = true;
});
就可以解决,实测无效。
还专门对比了支付宝的版本,发现两人使用的是相同的版本,一人好使,一人不好使。(安卓版本不同)
问题困扰了很久,最后发现应该是配置
options.Cookie.SameSite = SameSiteMode.None;
完整session的配置代码如下:
ConfigureServices方法中配置
services.AddDistributedMemoryCache(); services.AddSession(options => {// Make the session cookie essential options.Cookie.IsEssential = true; options.Cookie.SameSite = SameSiteMode.None; });
Config方法中:
app.UseSession();
都在MVC前面,教程中都有。