Asp.net mvc Iframe偶尔会丢失会话cookie

Asp.net mvc Iframe偶尔会丢失会话cookie,asp.net-mvc,iframe,session-cookies,payment-gateway,session-state,Asp.net Mvc,Iframe,Session Cookies,Payment Gateway,Session State,偶尔在iframe中提交付款表单时,来自支付网关的回发会导致用户注销,因为请求缺少ASP.NET_SessionId cookie(我们使用的是state server)。这不是应用程序池回收造成的问题,因为我已经检查了这些日志。它也只发生在生产环境中。我可以在表单提交之前看到会话cookie存在,因此我无法确定它在哪里丢失 您需要检查您是否不受最近推出的KB4524420的影响: 当HttpCookie.SameSite值为“None”时,ASP.NET现在将发出SameSite cookie

偶尔在iframe中提交付款表单时,来自支付网关的回发会导致用户注销,因为请求缺少ASP.NET_SessionId cookie(我们使用的是state server)。这不是应用程序池回收造成的问题,因为我已经检查了这些日志。它也只发生在生产环境中。我可以在表单提交之前看到会话cookie存在,因此我无法确定它在哪里丢失

您需要检查您是否不受最近推出的KB4524420的影响:

当HttpCookie.SameSite值为“None”时,ASP.NET现在将发出SameSite cookie标头,以适应Chrome中SameSite cookie处理即将发生的更改。作为此更改的一部分,FormsAuth和SessionState Cookie也将使用SameSite='Lax'而不是以前的默认值'None'发出,尽管这些值可以在web.config中重写

您必须在会话状态标记中设置cookieSameSite=“None”以避免此问题

<sessionState cookieSameSite="None"  cookieless="false" timeout="360"> 
</sessionState>


但是,在某些情况下,这将破坏Safari(IOS在V13之前和MaSOS中的Safari),所以你可能需要考虑添加两个cookies,一个是SAMESITE=No.1,而不为SameSite指定任何值。这是由于Safari中的一个bug导致SameSite=None变为SameSite=Strict。

不幸的是,这种方法没有成功。回发请求中仍缺少Cookie。帮助我解决了SharePoint Online App Web部件中的类似问题—在iframe中丢失会话Cookie。谢谢