2013-03-05 166 views
6

我有一個ASP.NET FileUpload控件在我部署它之前工作正常。然後它工作正常,除非文件超過〜55kb。我認爲這與回發有關,並且我必須將其放入會話變量中。儘管如此,它適用於小文件。無法訪問已關閉的文件

這可能是會話變量有多大的限制嗎?但是,它從我的IDE運行,所以不知道。

System.ObjectDisposedException:無法訪問已關閉的文件

感謝您的任何線索。

回答

7

這可以通過在web.config給DiskBufferSize解決:

<system.web> 
    <httpRuntime executionTimeout="90" maxRequestLength="20000" useFullyQualifiedRedirectUrl="false" requestLengthDiskThreshold="8192"/> 
</system.web> 

Cannot access a closed file

2

我做了一些這方面的測試,它似乎是設置DiskBufferSize通過禁用解決此問題會緩衝。現在電腦將使用更多的內存。現在緩衝被有效地禁用。而你從中獲得的性能收益已經消失。

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

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

我不知道你把什麼放在你的'會話變量',但我猜這是文件控制,這是問題。

這解決了我的問題,以防其他人遇到此問題,但不想禁用緩衝。

+0

謝謝!這在架構上是一個更好的答案。 – Carling 2014-11-11 16:56:54

相關問題