Asp.net 会话变量在paypal之后变为空,并在按ctrl+;f5

Asp.net 会话变量在paypal之后变为空,并在按ctrl+;f5,asp.net,session,c#-4.0,paypal,Asp.net,Session,C# 4.0,Paypal,我遇到了一个奇怪的情况,从PayPal回来后,我的会话变量将其设置为null 在将页面重定向到PayPal之前的场景中,我为会话赋值 public string sessionToken { get { if (Session["token"] != null) { return Session["

我遇到了一个奇怪的情况,从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)并返回sucess页面后,我试图从那里访问上面的会话变量,那个么该值为空。但如果我按几次ctrl+f5,它就会得到值。 这里有什么问题? 在我的开发pc中,这工作正常,在服务器中托管时出现问题。(IIS 6)

我的web配置如下所示:

<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>


. 我发现在评论部分提到了这个奇怪的问题,但也没有回答这个问题。

如果按ctrl+F5解决了这个问题,那么您的成功页面可能会被缓存。尝试在您的成功页面上禁用缓存,这可能正好起作用。您可以参考此链接以供参考:

您有两种方法,一种是现在,将用户与cookie和最终付款连接起来,另一种是将变量发送到paypal,并读取此变量以将用户与付款连接起来。如果使用与cookie连接的会话,则最好使用SQL server保存会话,而不是InProc。对于sql上的会话,您不会丢失它们。这不会导致问题,但会话超时3600似乎有点高?您知道这只需要几分钟吗?您的实时服务器上有一台计算机,还是有多台具有负载平衡功能的计算机?尝试将会话存储在DB中。即使在禁用浏览器后,现金问题仍然存在。我建议您进行测试。做完整的过程(即带你去pay pal),返回页面时预计会丢失会话。现在清除浏览器缓存(使用开发人员工具),然后刷新页面。如果检测到会话,则表示添加的代码未成功删除缓存。请让我知道您的发现。您的意思是使用firebug删除会话cookie吗?不,只是删除缓存。除了Firefox之外,您是否在其他浏览器中遇到过同样的问题?这不仅仅是关于浏览器缓存的问题,我希望您尝试禁用页面上的缓存,使其不会缓存到服务器上。