处理InputStream后,进程无法访问该文件

时间:2014-06-02 12:15:03

标签: c# asp.net

我在服务器上执行了一些图片上传。图像保存操作如下所示:

 var image = Request.Files[0];
 image.SaveAs(gFilePath);
 image.InputStream.Flush();
 image.InputStream.Close();
 image.InputStream.Dispose();

但是,即使在处理InputStream之后,有时我也会收到错误The process cannot access the file because it is being used by another process.唯一可以访问该图像的进程是项目实例。那么,发生了什么?

2 个答案:

答案 0 :(得分:0)

在您的代码中,无法确保正确关闭流。如果在调用Close或Dispose之前发生错误,则资源仍然被阻止。使用try-catch-finally并释放finally块中的资源,在catch块中记录失败 - 不要使用Close和Dispose,Dispose就足够了。

答案 1 :(得分:0)

Request.Files.*不是客户端磁盘上文件的流。服务器无权访问客户端的磁盘。这将是一个重大的安全问题。

此流表示服务器在网络上收到的内容。您发布的错误消息不能来自此流。你误解了这个例外。它来自其他地方。也许它来自SaveAs电话。在这种情况下,这意味着目标路径正在使用中。

由于您只发布了最少的详细信息,因此该问题没有足够的信息来判断异常的来源。养成阅读和理解所有异常信息的习惯。