C# 获得;无法访问已关闭的文件";从会话获取文件时出错消息

C# 获得;无法访问已关闭的文件";从会话获取文件时出错消息,c#,asp.net,file-upload,httppostedfile,C#,Asp.net,File Upload,Httppostedfile,我有一个asp.net文件上载控件。 我可以成功地将文件上载到会话中的存储,但当我尝试获取其inputstream时 (我正在HttpPosterFile中存储文件)我遇到错误 无法访问已关闭的文件 tr.PostedFile/将其添加到web.config文件中 <system.web> <httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="15360" requestLengthDiskTh

我有一个asp.net文件上载控件。 我可以成功地将文件上载到会话中的存储,但当我尝试获取其inputstream时 (我正在HttpPosterFile中存储文件)我遇到错误

无法访问已关闭的文件


tr.PostedFile/将其添加到web.config文件中

<system.web>
  <httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="15360" requestLengthDiskThreshold="15360"/>
</system.web>


您是否使用了
使用了


如果是,请注意在将字符串放入inputstream之前不要关闭此选项。

在会话中存储文件数据的字节数组,而不是在流中存储HttpPostedFile,这不是更好吗?tr.PostedFile在web.config中设置RequestLengthDiskThreshold(最大为MaxRequestSize)可以解决此问题。显然,ASP.Net缓冲了输入流的第一个块,然后将该流视为已关闭。如果设置MaxRequestLength(比如1536),但让RequestLengthDiskThreshold为默认值,则可能发生这种情况。这显然是由于一些内部代码的错误,这使得它成为了微软的一个bug。设置这两个值可以解决问题。
<system.web>
  <httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="15360" requestLengthDiskThreshold="15360"/>
</system.web>