【发布时间】:2025-12-08 07:15:02
【问题描述】:
我是 ASP.NET 会话的新手,我注意到存储在 Session 中的会话密钥/变量在 PostBack 后过期。
在下面的代码中,在第一个页面加载期间,我将一些 XML 保存到 Session 键中。然后,如果用户单击网页上的单选按钮,则会导致 PostBack。在 PostBack 之后,与 XML 数据一起存储的 Session 变量现在为 NULL。
我认为这可能与 Session.Timeout = 60 有关,但我注意到即使用户在第一个页面加载的前 10 秒内单击单选按钮,Session 变量仍然为 NULL。
在下面的 doStuff() 中,xmlDoc 为 NULL。
public partial class InstallmentBillingPortal : System.Web.Ui.Page
{
XmlDocument xmlDoc
{
get
{
return Session["xmlDocKey_3069"] == null ? null : (XmlDocument)Session["xmlDocKey_3069"];
}
set
{
Session["xmlDocKey_3069"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
Session.Timeout = 60;
if (!this.IsPostBack)
{
var xml = File.ReadALlText(Server.MapPath(@"request.xml"));
xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
}
else
{
doStuff();
}
}
void doStuff()
{
if (xmlDoc != null)
{
// do something
}
}
}
【问题讨论】: