ASP.NET会话没有';当导航到另一个站点并返回时,是否无法保持?

ASP.NET会话没有';当导航到另一个站点并返回时,是否无法保持?,asp.net,asp.net-mvc,session,Asp.net,Asp.net Mvc,Session,我有一个ASP.NET MVC(非核心)web应用程序,它使用另一个站点对用户进行身份验证,这涉及到导航到另一个站点并返回。我将信息存储在会话变量中,用户返回原始站点后,我希望读取该变量,但用户返回时的会话是新的,而不是我存储信息的会话 ASP.NET为什么/如何决定启动新会话(或不记得旧会话)?有什么办法可以让它按照我想要的方式运行吗?好吧,我已经弄明白了。问题是,身份验证站点的页面会执行POST以返回到原始站点。ASP.NET会话cookie具有SameSite=Lax,因此像这样的跨站点帖

我有一个ASP.NET MVC(非核心)web应用程序,它使用另一个站点对用户进行身份验证,这涉及到导航到另一个站点并返回。我将信息存储在会话变量中,用户返回原始站点后,我希望读取该变量,但用户返回时的会话是新的,而不是我存储信息的会话


ASP.NET为什么/如何决定启动新会话(或不记得旧会话)?有什么办法可以让它按照我想要的方式运行吗?

好吧,我已经弄明白了。问题是,身份验证站点的页面会执行POST以返回到原始站点。ASP.NET会话cookie具有SameSite=Lax,因此像这样的跨站点帖子不会发送它。由于ASP.NET没有看到cookie,因此它会创建一个新会话和关联的cookie,覆盖原始会话

解决方案(或a解决方案)是将cookie标记为SameSite=None和Secure,我通过将以下内容添加到我的Web.config中实现了这一点:

<sessionState cookieSameSite="None" />
<httpCookies requireSSL="true" />


第一行使会话cookie SameSite=None,第二行使所有cookie安全。

只要您给站点设置cookie的机会,所有cookie都应该是好的。即使重定向到另一个站点也应该是很好的——查看实际的HTTP请求(即浏览器中的开发工具或Fiddler)应该可以了解正在发生的事情。(请注意,如果没有关于您案例的确切细节,这个问题是不可回答的-会话状态确实是按照您想要的方式设计的)查看流量的好建议,这使您很容易理解。我已经为那些遇到这个问题的人发布了答案。