我有一个.NET Web应用程序,当用户在付款网关上付款后,我似乎在回发会话时丢失了会话。
1.用户登录门户
2.根据门户中的交易,将某一点定向到支付网关门户
3.致电第三方支付网关时,我们会传递回叫网址,并在其中显示付款状态以及一些详细信息
4.在跟踪中运行它时,我看到在上面的步骤3中,付款网关将用户登录我的应用程序时生成的ASP.NET_SessionId cookie返回给我。
5.此时,当我尝试检索会话详细信息时,它们丢失了。结果,我将用户带回登录页面,而不是确认付款状态,
我相信,当从支付网关进行回发时,不会在我的IIS中检索到该会话。我检查了AppPool回收超时(设置为默认值1740),该超时将回收会话。但是,这在1740分钟的时间范围内发生了多次。我的默认空闲超时为20分钟。确实发生这种情况时,用户闲置时间不会超过20分钟
这是间歇性的,一天中任何给定时间可能很少有用户发生。 可能是什么原因造成的?如何在IIS中跟踪会话以查看其是否真的过期了?
答案 0 :(得分:0)
我实际上正面临着类似的事情。
我还没有解决它,但是这里我需要检查一些事情。
确保您将付款网关返回的网址是相同的http / https机制。如果您的会话Cookie仅是安全的,而您又返回不安全,则会话将丢失。
我正在努力,因为即使会话仍应处于活动状态,我唯一能说回来的方法是将会话ID附加到不太安全的网址上。
然后在session_start调用之前添加到我的代码中
if (isset($_POST['sessionname'])) {
session_id($_POST['sessionname']);
}
session_start();