如何坚持将信息保存在Session [“Stuff”]中?

时间:2013-11-19 17:16:53

标签: c# asp.net-mvc session

当用户进行选择并单击按钮时,我会致电:

public ActionResult Storage(String data)
{
  Session["Stuff"] = data;
  return null;
}

然后,我将它们重定向到另一个通过

访问数据的页面
@Session["Stuff"]

到目前为止,我很高兴。我接下来要做的是,点击新页面上的按钮,我会打电话给:

public ActionResult Pdfy()
{
  Client client = new Client();
  byte[] pdf = client.GetPdf("http://localhost:1234/Controller/SecondPage");
  client.Close();
  return File(pdf, "application/pdf", "File.pdf");
}

请注意,PDF化本身效果非常好。问题是,当我第二次访问第二页时(用户看到它并且在原始和重新加载时看起来都很棒),事实证明 Session [“Stuff”] 突然出现了无效的!

我是否通过召回开始了新的会议? 如何持久保留 Session [“Stuff”] 中存储的数据

2 个答案:

答案 0 :(得分:2)

如果您只是在MVC应用程序中存储字符串数据(如方法签名所示),请不要。

将数据作为查询参数传递给需要它的每个方法要容易得多。它更容易管理,不依赖于会话粘性。

要生成相应的链接,您可以将data传递给您的观看次数,然后使用Html.ActionLink生成包含相应参数数据的链接。

答案 1 :(得分:2)

以下是会话变量可以返回null的几个原因:

  • null已传入Storage
  • 其他一些代码将Session["Stuff"]设置为null
  • 会话超时
  • 调用Session.Clear()(或Session.Abandon()
  • 在服务器上重新启动基础AppPool
  • 您的网络服务器正在养殖且会话状态未正确分发

前两个可以通过调试发现。