【发布时间】:2015-05-28 00:16:19
【问题描述】:
我在 ASP.NET 中有一个这样的控制器:
public class FileUploadController : Controller
{
// ...
static List<ThreePartKey> uploadedFiles = new List<ThreePartKey> ();
// ...
public ActionResult Index ( )
{
// ...
}
[HttpPost]
public ActionResult Index (HttpPostedFileBase file,
string selectedOrgName,
string selectedCatName)
{
// ...
uploadedFiles.Add(new ThreePartKey {
orgname = selectedOrgName,
catname = selectedCatName,
filename = fileNameNoExtension });
ViewBag.uploadedFiles = uploadedFiles;
return View();
}
}
第二个Index 函数上传用户选择的文件并将其信息添加到上传文件列表中。该列表信息用于构建 HTML 表格。我最终在List<ThreePartKey> uploadedFiles 前加上static 的原因是因为没有它,每次调用Index 时,我的列表将只有最后上传的文件。
该列表会在内存中保留多长时间?我希望它对应于用户sessions,但我不确定。
【问题讨论】:
-
它应该在那里,直到 IIS 回收或重新加载应用程序域。它是静态的,所以如果我正确理解这些术语,那么垃圾收集器在正常操作期间永远不会清理它。
-
static表示每个应用程序只有一个实例。在 IIS 中,这意味着每个 AppPool 一个实例。如果您尝试存储每个用户的信息,这是一个问题。为什么不直接使用Session?
标签: c# asp.net asp.net-mvc session