Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在会话变量中存储HttpContext.Current.Request.Files_C#_Asp.net_Session State - Fatal编程技术网

C# 在会话变量中存储HttpContext.Current.Request.Files

C# 在会话变量中存储HttpContext.Current.Request.Files,c#,asp.net,session-state,C#,Asp.net,Session State,我想将用户上传的文件存储在会话变量中,以便我可以在项目中的任何页面使用它。我正在从语句中检索文件: httpFileCollection uploads=HttpContext.Current.Request.Files; 如何在会话变量中存储和检索此变量 感谢最近文件对象仅限于当前请求;要在请求之间保持这种状态,您需要对上传的数据进行处理,或者从中读取数据 在我看来,出于可伸缩性的原因,将其存储在会话中不是一个好主意-例如,将文件写入磁盘上的共享暂存区,并在会话中存储路径将更为自然。与在会话

我想将用户上传的文件存储在会话变量中,以便我可以在项目中的任何页面使用它。我正在从语句中检索文件:

httpFileCollection uploads=HttpContext.Current.Request.Files;
如何在会话变量中存储和检索此变量


感谢最近
文件
对象仅限于当前请求;要在请求之间保持这种状态,您需要对上传的数据进行处理,或者从中读取数据


在我看来,出于可伸缩性的原因,将其存储在会话中不是一个好主意-例如,将文件写入磁盘上的共享暂存区,并在会话中存储路径将更为自然。

与在会话状态中存储和检索任何其他对象的方式相同:

//Store
Session["UploadedFiles"] = uploads;

//Retrieve
if (Session["UploadedFiles"] != null)
{
  //try-catch blocks omitted for brevity. Please implement yourself.
  HttpFileCollection myUploads = (HttpFileCollection)Session["UploadedFiles"];

  // Do something with the HttpFileCollection (such as Save).

  // Remove the object from Session after you have retrieved it.
  Session.Remove("UploadedFiles");
}
在会话中存储此对象的明智性是有争议的,但是我不建议这样做


关于HttpFileCollection变量不能存储在会话状态的争论(请参考前面的问题),我反驳了这一点,因为我在过去已经能够做到这一点。将对象检索到变量中后,可以按需要保存它。

以会话状态重新存储-这取决于您使用的会话提供程序。内存中的提供程序可能会工作,但由于类型不可序列化,进程外存储将严重失败。因此,依靠这一点是脆弱的。特别是,要使它在web服务器场上正常工作,您需要进程外。@马克:谢谢您的评论。我知道在会话中存储这样一个对象的后果,并在我的回答中提到了这一点。