控制器的静态成员存活的时间
本文关键字:时间 静态成员 控制器 | 更新日期: 2023-09-27 17:50:52
我有一个控制器在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表。我最终用static
前缀List<ThreePartKey> uploadedFiles
的原因是因为没有它,我的列表每次调用Index
时只会有最后上传的文件。
该列表在内存中保留多长时间?我希望它对应于用户sessions
,但我不确定。
静态变量对于AppDomain是全局的,并且在AppDomain的生命周期内持续。这个值不是特定于用户的,在ASP.NET的情况下,它会一直存在,直到web应用程序重新启动。
还值得注意的是,静态变量不一定是线程安全的,因此在操作变量时应该小心。在您的示例中,列表