我在服务器上执行了一些图片上传。图像保存操作如下所示:
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.
唯一可以访问该图像的进程是项目实例。那么,发生了什么?
答案 0 :(得分:0)
在您的代码中,无法确保正确关闭流。如果在调用Close或Dispose之前发生错误,则资源仍然被阻止。使用try-catch-finally并释放finally块中的资源,在catch块中记录失败 - 不要使用Close和Dispose,Dispose就足够了。
答案 1 :(得分:0)
Request.Files.*
不是客户端磁盘上文件的流。服务器无权访问客户端的磁盘。这将是一个重大的安全问题。
此流表示服务器在网络上收到的内容。您发布的错误消息不能来自此流。你误解了这个例外。它来自其他地方。也许它来自SaveAs
电话。在这种情况下,这意味着目标路径正在使用中。
由于您只发布了最少的详细信息,因此该问题没有足够的信息来判断异常的来源。养成阅读和理解所有异常信息的习惯。