无法使用Session从UploadFile控件保存文件

时间:2011-10-13 08:41:07

标签: asp.net file session file-upload

我尝试使用UploadFile控件上传文件,但我不能这样做。当我尝试保存会话中保存的文件时出现问题。首先,我将UploadControl分配给会话变量:

Page.Session["postedFile"] = fuUploadGeometry;

之后,当我点击“上传”按钮并想要保存此文件时:

((FileUpload)Session["postedFile"]).SaveAs(filePath);

我收到错误

cannot access a closed file

但是当我直接使用FileUpload名称

调用时
fuUploadGeometry.SaveAs(filePaht)

问题不存在。

为什么?如果enybody知道如何解决这个问题,我将不胜感激。

!!!!!!!!!!!!!! 问题解决了:))

我在web.config中设置

<httpRuntime maxRequestLength="30480" requestLengthDiskThreshold="30480"

直到现在一切正常:)

2 个答案:

答案 0 :(得分:0)

请勿使用Session。它没有任何意义。并且,正如您所发现的那样,无论如何,您无法在提交请求之外使用它。

只需使用正在运行的代码即可。这就是你应该怎么做的。

答案 1 :(得分:0)

安德鲁说的话。通过设置requestLengthDiskThreshold,您所做的就是禁用缓冲,这将导致服务器消耗更多内存,并且所有内容都运行得更慢。

我认为正确的解决方法是使用SaveAs方法将发布的文件保存到FIRST回发的临时文件夹中,并将文件路径存储到viewstate或session中的临时文件。

在任何额外的回发或重定向之后,特别是如果涉及异步线程,如果需要缓冲,则SaveAs功能不起作用;您将收到错误“无法访问已关闭的文件”。