我尝试使用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"
直到现在一切正常:)
答案 0 :(得分:0)
请勿使用Session。它没有任何意义。并且,正如您所发现的那样,无论如何,您无法在提交请求之外使用它。
只需使用正在运行的代码即可。这就是你应该怎么做的。
答案 1 :(得分:0)
安德鲁说的话。通过设置requestLengthDiskThreshold,您所做的就是禁用缓冲,这将导致服务器消耗更多内存,并且所有内容都运行得更慢。
我认为正确的解决方法是使用SaveAs方法将发布的文件保存到FIRST回发的临时文件夹中,并将文件路径存储到viewstate或session中的临时文件。
在任何额外的回发或重定向之后,特别是如果涉及异步线程,如果需要缓冲,则SaveAs功能不起作用;您将收到错误“无法访问已关闭的文件”。