use*_*335 0 c# asp.net asp.net-mvc session
我在 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();
}
}
Run Code Online (Sandbox Code Playgroud)
其中第二个Index函数上传用户选择的文件并将其信息添加到已上传文件的列表中。该列表信息用于构建 HTML 表格。List<ThreePartKey> uploadedFiles我最终添加前缀的原因static是因为如果没有它,我的列表将只有每次调用时最后上传的文件Index。
该列表在内存中保留多长时间?我希望它与 user 相对应sessions,但我不确定。
静态变量对于 AppDomain 来说是全局的,并且在 AppDomain 的生命周期内持续存在。对于 ASP.NET,该值不是特定于用户的,并且基本上会一直保留到 Web 应用程序重新启动为止。
还值得注意的是,静态变量不一定是线程安全的,因此操作变量时应小心。在您的情况下, List<ThreePartKey> 本质上不是线程安全的,因此您应该在代码中适应这一点(除非您更改实现以使用会话变量或其他东西)。
| 归档时间: |
|
| 查看次数: |
526 次 |
| 最近记录: |