使用会话对象时,对象引用未设置为对象的实例

时间:2012-02-22 09:37:17

标签: c# asp.net session

这有什么不对吗?

strFname = this.Session["FileName"].ToString();

虽然我将其定义为

Session["FileName"] = strFname;

给出对象引用错误。

2 个答案:

答案 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));
}