asp.net - session 变量在 paypal 后变空并在按 ctrl+f5 后接收值

标签 asp.net session c#-4.0 paypal

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

在我将页面重定向到 PayPal 之前的场景中,我为 session 分配了值。

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

调用 Paypal :

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

在用户完成 paypal 后(如果用户需要一些时间来完成 txn)并返回到成功页面,我试图从那里访问上面的 session 变量,然后该值为空。但是如果我按几次 ctrl+f5 然后它就会有值(value)。 这里有什么问题? 在我的开发电脑中,这工作正常,当我托管在服务器中时出现问题。 (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 中使用了类似的代码.我在评论部分发现了这个奇怪的问题,但也没有回复该问题。

最佳答案

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

关于asp.net - session 变量在 paypal 后变空并在按 ctrl+f5 后接收值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21906252/

相关文章:

asp.net - 线程、线程池和 Unity 的 ThreadScope

session - session 超时时来自浏览器的 HTTP 请求

c - 实现 session 管理

c# - DateTime.ToBinary() 和 DateTime.ToFileTime() 有何不同?

asp.net - 查询中的 Linq 子查询

c# - 如何在数据库的文本字段中存储 byte[] 并检索它

c# - 在 ASP.NET 中设置动态创建图像的内容长度

c# - 解析高级 CSV 文件

c# - 对象或值作为我的服务/数据层的参数

security - 将 session ID 作为 url 参数传递的危害