【问题标题】:Session variable get empty after paypal and recieve value after press ctrl+f5会话变量在 paypal 后为空,按 ctrl+f5 后接收值
【发布时间】:2014-03-21 07:18:13
【问题描述】:

我遇到了奇怪的情况,我的会话变量在从 PayPal 回来后将其设置为 null 一次。

在我将页面重定向到 PayPal 之前的场景中,我将值分配给会话。

 public string sessionToken
        {
            get
            {
                if (Session["token"] != null)
                {
                    return Session["token"].ToString();
                }
                else
                    return string.Empty;
            }
            set
            {
                Session["token"] = value;
            }
        }

致电贝宝:

 bool ret = payPalCaller.ShortcutExpressCheckout(amt, ref token, ref retMsg, ref status);
 if (ret)
    {
          sessionToken = token;
          Response.Redirect(retMsg,false);
     }

在用户完成 paypal 后(如果用户需要一些时间来完成 txn)并返回成功页面,然后我试图从那里访问上面的会话变量,那么该值是空的。但如果我按 ctrl+f5 几次,它就会获得价值。 这里有什么问题? 在我的开发电脑中,这工作正常,当我托管在服务器中时会出现问题。 (IIS 6)

我的 web config 配置如下:

<configuration>
  <location path="RegisterUser.aspx">
    <system.web>
      <authorization>
        <allow users="?" />
      </authorization>
      <httpRuntime executionTimeout="43200" maxRequestLength="104856" />
      <sessionState timeout="3600" mode="InProc" cookieless="false"></sessionState>
      <customErrors mode="ON" />
    </system.web>
  </location>
</configuration>

编辑:

我在Checkout and Payment with PayPal 中使用了类似的代码。我在评论部分发现了这个奇怪的问题,但也没有回复该问题。

【问题讨论】:

  • 你有两种方式,一种是你现在做的,将你的用户与他们的cookie和最终付款联系起来。另一种是将变量发送到paypal,并读取这个变量来连接付款的用户。如果您使用与 cookie 连接的会话,那么最好使用 SQL 服务器来保存会话而不是 InProc。使用 sql 会话,您不会丢失它们。
  • 不是说这会导致问题,而是 3600 的会话超时似乎有点高?你知道它在几分钟内吗?
  • 您的实时服务器上是一台机器,还是多台具有负载平衡功能的机器?尝试将会话存储在数据库中。

标签: asp.net session c#-4.0 paypal


【解决方案1】:

如果按 ctrl+F5 可以为您解决问题,那么您的成功页面可能只是被缓存了。尝试在您的成功页面上禁用缓存,这可能会奏效。你可以参考这个链接:Disabling browser caching for all browsers from ASP.NET

【讨论】:

  • 即使在我禁用浏览器后问题仍然存在。
  • 我建议您进行测试。完成整个过程(带你到支付宝),返回页面时预计会丢失会话。现在清除浏览器缓存(使用开发人员工具),然后刷新页面。如果检测到您的会话,则意味着您添加的代码未成功删除缓存。请告诉我你的发现。
  • 你的意思是使用firebug删除会话cookie吗?
  • 不只是删除缓存。您在 Firefox 以外的任何其他浏览器中是否也遇到过同样的问题?
  • 这不仅仅是浏览器缓存的问题,我希望您尝试在您的页面上禁用缓存,以便它不会缓存在服务器上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多