Asp.net 会话变量在paypal之后变为空,并在按ctrl+;f5
我遇到了一个奇怪的情况,从PayPal回来后,我的会话变量将其设置为null 在将页面重定向到PayPal之前的场景中,我为会话赋值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["
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之外,您是否在其他浏览器中遇到过同样的问题?这不仅仅是关于浏览器缓存的问题,我希望您尝试禁用页面上的缓存,使其不会缓存到服务器上。