我有一个包含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相同。但会话变量为空。
谢谢!