我遇到了奇怪的情况,我的 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/