我遇到了奇怪的情况,我的会话变量在从PayPal返回后将其设置为null。
在我重定向页面到PayPal之前的场景中,我将值分配给会话。
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)并返回到sucess页面,并且从那里我试图访问上面的会话变量,那么该值为空。但如果我按 ctrl + f5 几次,那么它就会获得价值。 这里有什么问题? 在我的开发电脑中,这工作正常,当我在服务器托管时出现问题。 (IIS 6)
我的网络配置配置如下:
<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中使用了类似的代码。我发现评论部分提到了这个奇怪的问题,但也没有回答这个问题。
答案 0 :(得分:1)
如果按 ctrl + F5 为您解决了问题,那么您的成功页面可能会被缓存。尝试在成功页面上禁用缓存,这可能就是这样做的。您可以参考此链接以供参考:Disabling browser caching for all browsers from ASP.NET