在 iframe 中使用 RedirectToAction 后,ASP.NET MVC 会话会重置

2023-12-13

我有一个 ASP.NET MVC 应用程序(例如 App_A)和另一个 ASP.NET 应用程序(例如 App_B)。 App_B 有一个 iframe,可在其中加载 App_A。

App_B 上的代码如下所示:iframe.Attributes["src"] = frameURL;其中,frameURL 是一个包含 App_A 链接的变量。

当 iframe 加载 URL 和index()App_A 上的方法被调用,我在会话中设置一个值Session["CartID"] = 373895我正在使用RedirectToAction("Shipping")。但在Shipping()动作方法,会话似乎是null。设置会话变量并调用的代码RedirectToAction()位于 iframe 内。

我之前在 Safari 浏览器上遇到过类似的问题:

过去 2 年一直运行良好,没有出现任何问题。以前,我只在 Safari 浏览器上遇到 CORS 问题。由于父窗口和 iframe 上的网站来自不同的域,因此我无法在重定向后保留 iframe 中的会话值,因为它正在重置。要在 Safari 上修复此问题,我必须在父窗口上加载 iframe 网站 (App_A),设置 cookie,然后重定向回父网站并再次在 iframe 中加载 App_A。这使我即使在重定向后也可以保留会话值。现在我在 Chrome、Firefox 和 Microsoft Edge 上遇到了类似的问题,我尝试了适用于 Safari 的相同修复(如上所述),但我仍然无法在 Chrome 和其他浏览器上保留会话值。

一些调试信息:

我尝试调试这个并添加了Session_Start()方法到Global.asax文件,它被击中两次,一次在调用之前,一次在调用之后RedirectToAction("Shipping"). The SessionID调用前和调用后也不同RedirectToAction("Shipping").

仅当我从本地计算机运行 App_A 时才会出现此问题。当我在我们的生产站点中尝试它时,它运行良好,没有任何问题。此外,当我在父窗口上加载 App_A 时,它会保留会话值,没有任何问题。也就是说,在App_B上我替换了storefrontiframe.Attributes["src"] = frameURL; with Response.Redirect(frameURL);当 App_A 加载到新窗口时,会话值将被保留,没有任何问题。

我不确定为什么我的会话值在调用后突然被清除RedirectToAction()。任何帮助将不胜感激。


我遇到了类似的问题,并且能够通过向 Web.config 中的 sessionState 节点添加一个值为“None”的“cookieSameSite”属性来解决该问题。像这样的东西:

<sessionState cookieSameSite="None" timeout="60" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 iframe 中使用 RedirectToAction 后,ASP.NET MVC 会话会重置 的相关文章

随机推荐