.net - 从支付网关回发时丢失 session

我有一个 .NET Web 应用程序,在用户通过支付网关付款后,我似乎在回发时丢失了我的 session 。
1. 用户登录门户 2. 基于门户中的交易,一次被定向到支付网关门户 3. 调用第三方支付网关时,我们传递支付状态发布到的回调 URL 以及一些详细信息 4. 当我通过跟踪运行它时,我看到当用户登录我的应用程序时生成的 ASP.NET_SessionId cookie 在上面的步骤 #3 中被支付网关传回给我。 5. 此时,当我尝试检索 session 详细信息时,它们丢失了。结果我让用户返回登录页面,而不是确认付款状态,

我相信当从支付网关回发时, session 不会在我的 IIS 中检索到。我检查了 AppPool 回收超时(设置为默认值 1740 ),这将回收 session 。然而,这种情况在 1740 分钟的时间跨度内发生了多次。我的默认空闲超时是 20 分钟。当它确实发生时,并不是用户空闲超过 20 分钟

这是间歇性的,一天中的任何特定时间都可能发生在少数用户身上。 可能是什么原因导致的,我如何跟踪 IIS 中的 session 以查看它是否真的已过期?

最佳答案

其实我也面临着类似的事情。

我还没有解决它,但这里有几件事我必须检查一下。

确保您返回支付网关的 url 是相同的 http/https 机制。如果您的 session cookie 仅是安全的,而您返回到非安全状态,则该 session 将会丢失。

我很挣扎,因为即使 session 应该仍然处于事件状态,我唯一能取回它的方法是将 session ID 附加到安全性较低的 url。

然后在调用 session_start 之前添加到我的代码中

if (isset($_POST['sessionname'])) {
     session_id($_POST['sessionname']);
}

session_start();

https://stackoverflow.com/questions/56430829/

相关文章:

ios - 在应用程序生命周期的中间将本地 Realm 转换为同步 Realm (在 Swift 中

reactjs - 将自定义 Prop 与 RouteComponentProps 组合时缺少位置、

java - 如何将我的 SpringBoot 后端连接到 flutter?

azure-ad-b2c - Azure AD B2C 中的自定义策略不允许为属性保存空字符串

node.js - 为什么 'npm run build' 在开发服务器上花费 >30 分钟而在本地

javascript - 如何通过html或javascript在chrome中打开翻译对话框

javascript - 代码输出一个数字而不是未定义的?

python - 从 websocket 读取数据而不阻塞代码

jupyter-notebook - `jupyter kernelspec list` 命令没有找

junit - 覆盖本地函数中的 Mockito 语句不适用于 PER CLASS 模式?