2011-10-13 58 views
1

我嘗試使用UploadFile控制上傳文件保存文件,我不能做到這一點。當我嘗試保存會話中保存的文件時,會發現問題。首先,我給你UploadControl會話變量:無法從UploadFile控制使用會話

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

安德魯說的。並且通過設置requestLengthDiskThreshold,您所做的只是禁用緩衝,這將導致服務器消耗更多的內存,並且所有內容都會運行得更慢。

我認爲正確的解決方法是使用SaveAs方法將發佈文件保存到臨時文件夾中的第一個回傳,並存儲在視圖狀態或會話的文件路徑的臨時文件。

後的任何附加回傳或重定向,特別是如果異步線程都參與其中,另存爲功能不會,如果需要緩衝工作;您將收到錯誤「無法訪問已關閉的文件」。