6

我有一个 ASP.NET FileUpload 控件,它在我部署之前可以正常工作。然后它工作正常,除非文件超过〜55kb。我认为这与回发有关,我必须将其放入会话变量中。不过,它适用于小文件。

是否可能限制会话变量的大小?但是从我的 IDE 运行时它可以工作,所以不确定。

System.ObjectDisposedException:无法访问已关闭的文件

感谢任何线索。

4

2 回答 2

7

这可以通过在 web.config 中提供 DiskBufferSize 来解决:

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

per无法访问已关闭的文件

于 2013-03-15T12:23:16.367 回答
2

我对此进行了一些测试,似乎设置 DiskBufferSize 通过禁用缓冲来解决问题。现在计算机将使用更多内存。现在缓冲被有效禁用。并且您从中获得的性能提升已经消失了。

我认为正确的解决方案是使用 SaveAs 方法将发布的文件保存到 FIRST 回发的临时文件夹中,并将文件路径存储到视图状态或会话中的临时文件。

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

我不知道您在“会话变量”中放了什么,但我猜这是文件控制,这就是问题所在。

这解决了我的问题,以防其他人遇到此问题但不想禁用缓冲。

于 2014-10-01T20:17:28.850 回答