会话变量导致未设置对象引用

时间:2017-03-30 11:34:21

标签: asp.net

我有一个包含2个页面的ASP.NET 4.5 Web应用程序:Index.aspx和Preview.aspx 在索引页面上,我将一个名为inputList的List存储在Session变量中。 另外,我在一个不同的Session变量中存储了一个名为fileName的字符串,该字符串来自我上传的excel文件。我使用Server.Transfer来达到Preview.aspx

我有2个私有变量,我用这2个Session变量初始化。

问题是,如果我在按下按钮进入Server.Transfer之前在Index页面上等待超过1分钟,当我到达预览页面时,我得到"对象引用未设置为对象的实例"。

这是否因为Session变量超时而发生? 这就是我的web.config所拥有的:

应用程序池上的空闲超时为20分钟。 我不明白为什么我会收到这个错误。

可能是Server.Transfer导致我的局部变量为空吗?

这是基于浏览器的吗?我注意到在IE& FF在闲置约1分钟后就会发生这种情况,但是在Chrome上这会在10分钟后发生。

代码:

//Index.aspx
private string fileName;
private List<string> inputList = new List<string>();

//when the user clicks on the upload button
protected void btnUpload_Click(object sender, EventArgs e)
{
   inputList.Clear();
   fileName = UserId.Text + "_" + FileUploadToServer.PostedFile.FileName;
   Session["fileName"] = fileName;
   for (int i = 0; i < clientInputRange.Count(); i++)
   {
     string clientValue = clientInputRange.ElementAt(i).Text;
     inputList.Add(clientValue);
   }
   Session["inputList"] = inputList;
}

protected void PreviewBtn_Click(object sender, EventArgs e)
{
  Server.Transfer("~/Preview.aspx");
}

//Preview.aspx
private string fileName = "";
private List<string> inputList = new List<string>();

protected void Page_Load(object sender, EventArgs e)
{
   if(!IsPostBack)
   {
       inputList = Session["inputList"] as List<string>;
       fileName = Session["fileName"] as string;

       //Here is where I'm getting the error
       for (int i = 0; i < inputList.Count; i++)
       {
           ....
       }
   }
}

*更新:两个页面上的会话ID相同。但会话变量为空。

谢谢!

0 个答案:

没有答案