这有什么不对吗?
strFname = this.Session["FileName"].ToString();
虽然我将其定义为
Session["FileName"] = strFname;
给出对象引用错误。
答案 0 :(得分:3)
会话可能是暂时的。它可能会消失,或者您可能处于从未为该键分配任何内容的新会话中。假设最坏的 - 事实上,你只需要:
strFname = (string)Session["FileName"];
if(strFname != null) {
// ...
}
答案 1 :(得分:0)
只要不关闭窗口,就有办法让会话永远保持活着。在您希望保持会话活动的页面中,将其添加到底部某处的.aspx页面,就在
之前<!-- Keep all session variables alive -->
<iframe id="Defib" src="Defibrillator.aspx" runat="server" frameborder="0" height="0" width="0"></iframe>
现在你必须制作一个新页面。叫它Defibrillator.aspx这不是我的想法,但我忘记了作者的名字。
Defibrillator.aspx
<body></body>
Defibrillator.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
Response.AddHeader("Refresh", Convert.ToString((Session.Timeout * 60) - 10));
}