我有一个 ASP.NET FileUpload 控件,它在我部署之前可以正常工作。然后它工作正常,除非文件超过〜55kb。我认为这与回发有关,我必须将其放入会话变量中。不过,它适用于小文件。
是否可能限制会话变量的大小?但是从我的 IDE 运行时它可以工作,所以不确定。
System.ObjectDisposedException:无法访问已关闭的文件
感谢任何线索。
我有一个 ASP.NET FileUpload 控件,它在我部署之前可以正常工作。然后它工作正常,除非文件超过〜55kb。我认为这与回发有关,我必须将其放入会话变量中。不过,它适用于小文件。
是否可能限制会话变量的大小?但是从我的 IDE 运行时它可以工作,所以不确定。
System.ObjectDisposedException:无法访问已关闭的文件
感谢任何线索。
这可以通过在 web.config 中提供 DiskBufferSize 来解决:
<system.web>
<httpRuntime executionTimeout="90" maxRequestLength="20000" useFullyQualifiedRedirectUrl="false" requestLengthDiskThreshold="8192"/>
</system.web>
per无法访问已关闭的文件
我对此进行了一些测试,似乎设置 DiskBufferSize 通过禁用缓冲来解决问题。现在计算机将使用更多内存。现在缓冲被有效禁用。并且您从中获得的性能提升已经消失了。
我认为正确的解决方案是使用 SaveAs 方法将发布的文件保存到 FIRST 回发的临时文件夹中,并将文件路径存储到视图状态或会话中的临时文件。
在任何额外的回发或重定向之后,特别是在涉及异步线程的情况下,如果需要缓冲,SaveAs 函数将不起作用;您将收到错误“无法访问已关闭的文件”。
我不知道您在“会话变量”中放了什么,但我猜这是文件控制,这就是问题所在。
这解决了我的问题,以防其他人遇到此问题但不想禁用缓冲。